ROM-Asterisk. Как вернуть результат выполненного действия

Интеграция Asterisk и 1С:Предприятие 8.2, 8.1, 7.7
evgenius-inc
Member
Сообщений: 5
Зарегистрирован: 20 ноя 2015, 13:14

ROM-Asterisk. Как вернуть результат выполненного действия

Сообщение evgenius-inc » 20 ноя 2015, 14:41

Доброго дня. В обработке Панель телефонии делаю Рез = Телефония.ВыполнитьКоманду("Action: Queues"). Как вернуть результат выполненного действия? Переменная Рез только дает значение 1. Внешнее событие тоже ничего не ловит

admin
Администратор
Сообщений: 219
Зарегистрирован: 27 апр 2011, 18:35

Re: ROM-Asterisk. Как вернуть результат выполненного действия

Сообщение admin » 20 ноя 2015, 15:01

Asterisk AMI - штука асинхронная, также как и ROM-Asterisk.
Вы отправляете асинхронную команду, а коллбэком у вас является обработчик внешнего события.

Ответ на команду всегда приходит только как ВнешнееСобытие 1С больше никак.
В переменную Рез вернется булево, которое как бы говорит вам, мол со стороны ROM-Asterisk пули вылетели.

И кстати, эта команда
Рез = Телефония.ВыполнитьКоманду("Action: Queues")

она у вас не пройдет, т.к. строка должна заканчиваться CRLF, а AMI-пакет ОБЯЗАН заканчиваться двойным CRLF

Соответственно, т.к. двойного CRLF-а не было, то соединение ждет дальнейшего ввода. Рано или поздно оно "отсохнет" по таймауту

P.S.
В обычном мире CRLF - это #13#10, /r/n. В мире 1С - это Символы.ВК + Символы.ПС

evgenius-inc
Member
Сообщений: 5
Зарегистрирован: 20 ноя 2015, 13:14

Re: ROM-Asterisk. Как вернуть результат выполненного действия

Сообщение evgenius-inc » 20 ноя 2015, 15:33

Спасибо, помогло. Я вводил без двойного CRLF

evgenius-inc
Member
Сообщений: 5
Зарегистрирован: 20 ноя 2015, 13:14

Re: ROM-Asterisk. Как вернуть результат выполненного действия

Сообщение evgenius-inc » 23 ноя 2015, 15:15

И все-таки у меня не возвращаются результаты комманд
Делаю:
CRLF = Chars.CR + Chars.LF;
ВыполнитьКомманду("Action: Ping"+CRLF);

Должен вернуться через ВнешнееСобытие Ответ - "Response: Pong", но ничего не происходит.

Также выполняю комманду originate: проиходит звонок, но результат не показывает. Внешнеесобытие приходит только после поднятия трубки и совершения звонка

admin
Администратор
Сообщений: 219
Зарегистрирован: 27 апр 2011, 18:35

Re: ROM-Asterisk. Как вернуть результат выполненного действия

Сообщение admin » 23 ноя 2015, 15:29

evgenius-inc писал(а):И все-таки у меня не возвращаются результаты комманд
Делаю:
CRLF = Chars.CR + Chars.LF;
ВыполнитьКомманду("Action: Ping"+CRLF);

Должен вернуться через ВнешнееСобытие Ответ - "Response: Pong", но ничего не происходит.

Вам же говорили выше, что строка должна заканчиваться CRLF, а пакет CRLF+CRLF. Все еще не разобрались с форматом команд?

Также выполняю комманду originate: проиходит звонок, но результат не показывает. Внешнеесобытие приходит только после поднятия трубки и совершения звонка


Смотрите фильтры

evgenius-inc
Member
Сообщений: 5
Зарегистрирован: 20 ноя 2015, 13:14

Re: ROM-Asterisk. Как вернуть результат выполненного действия

Сообщение evgenius-inc » 23 ноя 2015, 15:47

И даже так
CRLF = Chars.CR + Chars.LF;

Телефония.ВыполнитьКоманду("Action: Ping"+CRLF+CRLF);

На обработчике ВнешнееСобытие прописал Сообщить(Данные)
никакого результата не получил в ответ

evgenius-inc
Member
Сообщений: 5
Зарегистрирован: 20 ноя 2015, 13:14

Re: ROM-Asterisk. Как вернуть результат выполненного действия

Сообщение evgenius-inc » 23 ноя 2015, 15:57

Так же и
Action: Command
Command: core show version
ActionID: 0123456789abcdef

Ничего в ответ не выводит

admin
Администратор
Сообщений: 219
Зарегистрирован: 27 апр 2011, 18:35

Re: ROM-Asterisk. Как вернуть результат выполненного действия

Сообщение admin » 23 ноя 2015, 16:12

1) Если вы пользуетесь бесплатной обработкой Панель телефонии, то там есть готовая функция ВыполнитьКоманду - используйте ее. Там уже есть готовая проверка корректности пакета.

2) Вам же выше сказали посмотреть фильтры. И как? Посмотрели? Зачем вы задаете вопрос, если потом не читаете ответ?
По умолчанию, Фильтр = ВнутреннийНомер. Хотите слышать всё - уберите фильтр и получите 100500 событий.


Вернуться в «ROM-Asterisk. 1С и Телефония»

cron