Мне нужно передать номер телефона с веб-страницы на настольный номеронабиратель. У меня есть хост, который ловит номер телефона со страницы, переданной из background.js:
var responseMessage = "";
chrome.runtime.onMessage.addListener(
function(request, sender, sendResponse) {
console.info(request.phonenumber);
chrome.runtime.sendNativeMessage('com.avvd.microsipcallfield', {text: request.phonenumber},function(response) {
if (chrome.runtime.lastError) {
responseMessage = chrome.runtime.lastError.message
console.info(responseMessage);
} else {
responseMessage = response;
}} )
sendResponse(responseMessage);
});
и отправив его на хост:
{
"name": "com.avvd.microsipcallfield",
"description": "Call Field Microsip host",
"path": "C:\\Users\\All Users\\callFieldHost\\host.bat",
"type": "stdio",
"allowed_origins": [
"chrome-extension://lbhgehbjeemkjmooaeopmfljahdoombd/"
]
}
Host.bat
java -jar HostDecoder.jar %*
в общем пока хоста нет, будет приложение, открывающее объект из JSON и отправляющее его на звонилку. тем не мение Я написал простой рекордер, и это результат:
1argument: chrome-extension://lbhgehbjeemkjmooaeopmfljahdoombd/
2argument: --parent-window=0
Пока я пытаюсь отправить номер, я получаю в консоли «Ошибка при обмене данными с собственным хостом обмена сообщениями». и как мы можем видеть, что хост-слушателю не передан номер. Может кто-нибудь посоветовать мне поискать, чтобы это починить?
Спасибо за помощь, документацию внимательно не читал.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


ОК. Есть еще вопрос. Я пытаюсь читать входящие сообщения, но получаю стабильность нулевого размера.
private String read(InputStream in) throws IOException {
byte[] length = new byte[4];
in.read(length);
int size = getInt(length);
if (size == 0) {
throw new InterruptedIOException("Zero size message");
}
byte[] message = new byte[size];
in.read(b);
return new String(message, "UTF-8");
}
private int getInt(byte[] bytes) {
return (bytes[3]<<24) & 0xff000000|
(bytes[2]<<16) & 0x00ff0000|
(bytes[1]<< 8) & 0x0000ff00|
(bytes[0]<< 0) & 0x000000ff;
}
Я отправляю объект с собственным сообщением
{text: 4325345423}
Что мне не хватает в этом случае?
Решаю вопрос. Проблема заключалась в отсутствии @echo off в лаунчере.
Сообщение не отправляется как параметр, см. документация: ваш собственный хост должен использовать стандартные потоки stdin / stdout. Посмотрите, как это реализовано, в демонстрациях, связанных с документацией.