Зарегистрировать пользовательское приложение tel/callto в Windows 10
Я создал этот сценарий, которым я поделился с вами, который отлично работал на моем компьютере с Windows 7, чтобы использовать ссылку на веб-странице с моим телефоном Yealink VOIP. С помощью "reg-файла", который вы видите в комментарии, я активировал tas-link uasage моего скрипта. Но теперь в Windows 10 я не могу заставить его работать больше! Может ли кто-нибудь помочь мне, как я могу "связать" "ссылку тел" в браузере на мой скрипт снова в Windows 10?
/*
test usage: cscript Z:\tel_link_open\tel.js [phone number]
create register_me.reg with:
REGEDIT4
[HKEY_CLASSES_ROOT\tel]
@="URL:knoop.frl Custom Telephone Protocol for VoIP phone"
"URL Protocol"=""
[HKEY_CLASSES_ROOT\tel\shell]
[HKEY_CLASSES_ROOT\tel\shell\open]
[HKEY_CLASSES_ROOT\tel\shell\open\command]
@="cscript \"Z:\\tel_link_open\\tel.js\" -c \"\\%1\""
*/
var call_number = WScript.Arguments(0);
call_number = call_number.replace(/\|.+/g,'');
// spatie -.
call_number = call_number.replace(/(\\tel:|%20|\(|\)|[a-z:\\ -]+)/g,'');
// + 31 ( 0 )
call_number = call_number.replace(/(\+|%2b)([0-9]+)(\(|%28)0(\)|%29)/ig,'00$2');
call_number = call_number.replace(/^0031/ig,'0');
WScript.Echo("\n\nGoing to dail: " + call_number + "\n\n");
//WScript.Sleep(50000000);
var outgoing_uri = "31"+"513"+"[number]"+"[internal extension]";
var login_name = "XXX";
var login_pass = "yyy";
var get_url = "http://192.168.xx.yy/servlet?number=" + call_number + "&outgoing_uri=" + outgoing_uri;
// Load the WinHttpRequest object.
var WinHttpReq = new ActiveXObject("WinHttp.WinHttpRequest.5.1");
// HttpRequest SetCredentials flags
HTTPREQUEST_SETCREDENTIALS_FOR_SERVER = 0;
// Specify the target resource.
WinHttpReq.open( "GET",
get_url,
false );
if (login_name.length) { // Set credentials for server.
WinHttpReq.SetCredentials( login_name,
login_pass,
HTTPREQUEST_SETCREDENTIALS_FOR_SERVER);
}
// It might also be necessary to supply credentials
// to the proxy if you connect to the Internet
// through a proxy that requires authentication.
// Send a request to the server and wait for
// a response.
WinHttpReq.send( );
// Display the results of the request.
WScript.Echo( "Result status: " + WinHttpReq.Status + " " + WinHttpReq.StatusText + "\n");
WScript.Echo( WinHttpReq.GetAllResponseHeaders( ) );
/* To save a binary file use this code instead of previous line
BinStream = new ActiveXObject("ADODB.Stream");
BinStream.Type = 1;
BinStream.Open();
BinStream.Write(WinHttpReq.ResponseBody);
BinStream.SaveToFile("out.bin");
*/
1 ответ
Я думаю, что вы можете найти решение в MSDN Microsoft:
* Регистрация приложения, обрабатывающего пользовательскую схему URI Чтобы зарегистрировать приложение для обработки конкретной схемы URI, добавьте новый ключ вместе с соответствующими подразделами и значениями в HKEY_CLASSES_ROOT. Корневой ключ должен соответствовать добавляемой схеме URI. Например, чтобы добавить схему, добавьте ключ [Имя протокола] в HKEY_CLASSES_ROOT следующим образом:
HKEY_CLASSES_ROOT
[Имя протокола]
Протокол URL = ""
Под этим новым ключом строковое значение протокола URL указывает, что этот ключ объявляет настраиваемый подключаемый обработчик протокола. Без этого ключа приложение-обработчик не запустится. Значение должно быть пустой строкой.
...
Когда пользователь щелкает ссылку, содержащую вашу пользовательскую схему URI, Windows Internet Explorer запускает подключаемый обработчик протокола, зарегистрированный для этой схемы URI. Если указанная команда открытия, указанная в реестре, содержит параметр%1, Internet Explorer передает URI зарегистрированному приложению обработчика подключаемых протоколов.*
дальнейшие детали см. под
Регистрация приложения в схеме URI
Это работает для tel-URI, но callto-URI где-то зарегистрирован в Skype. Вы должны найти его в реестре и добавить туда свою заявку.