Как я могу получить уникальный идентификатор и имя канала из только что совершенного вызова?

Я пытаюсь обновить до последней версии AsterNet со старой копии Asterisk.Net. Мы использовали для создания вызовов с помощью AsteriskManager.OriginateCall(), который возвращал объект Call. Этот объект вызова имел UniqueId и ChannelName.

Теперь я отправляю вызовы с помощью SendAction() и отправляю ему OriginateAction. Итак, мой первый вопрос: это правильный способ сделать это? Потому что в результате, который я получаю, UniqueId имеет значение null и не имеет ChannelName. Я думал, что имя канала может быть в атрибуте, но атрибуты тоже нулевые.

Итак, как я могу получить название канала и уникальный идентификатор звонка, который я только что сделал?

2 ответа

Решение

Вот как я это сделал: я создал OriginateAction. В OriginateAction я установил для Asynch значение true. Затем я отправил его с SendEventGeneratingAction() с таймаутом. Я проверяю, что ResponseEvents, который я получаю, не является нулевым, что responseEvents.Events.Count > 0, и что responseEvents.Events[0] является OriginateResponseEvent. Затем responseEvents.Events[0] содержит всю необходимую информацию.

Пожалуйста, обратитесь к странице " Действие". Также проверьте исходный код вашей библиотеки.

После запуска originate вы получаете событие OriginateResponse с информацией об идентификаторе actoion. После этого он будет порождать больше событий (в зависимости от версии), которые предоставят вам больше информации на основе actionid.

Другим решением является отправка для создания некоторых переменных, после чего используйте в dialplay команду UserEvent для возврата всей необходимой вам информации.

PS. Создание ядра для набора номера без опыта работы со звездочкой - очень плохая идея, потому что оно будет иметь проблемы под нагрузкой. Используйте уже написанные ядра или наймите эксперта.

Другие вопросы по тегам