Звездочка 11 Кто повесил трубку? - PullRequest
0 голосов
/ 27 сентября 2019

У меня есть АТС Asterisk 11, и я разрабатываю приложение-службу Windows, используя библиотеку github AsterNET.AMI для подключения моей УАТС.Пока все работает нормально, я могу отправлять команды и читать входящие сообщения о событиях.

Но теперь мне нужно разработать функцию в моем программном обеспечении, основанную на одной информации, которую, я думал, было бы легко получить.Информация, которую я ищу, - кто повесил трубку?

Я много гуглил и нашел несколько ответов, большинство из которых говорили о настройке опции G на CDR, но также и некоторые соображения по этому поводу.подход.Тем не менее, я не мог получить какую-либо ценную информацию для своего сценария.

Может быть, если я расскажу вам о моем рабочем сценарии, вы могли бы мне помочь.Пойдем, я собираюсь разделить пул это:

  • У меня есть звонящий с мобильного телефона, и этот вызов поступает на мой внутренний добавочный номер УАТС

  • Моя магистраль PSTN - это E1 / R2 непосредственно для моей УАТС

  • Независимо от того, всегда ли звонит абонент или вызываемый абонент, у меня действительно есть сообщение "обычная очистка" для hangup_cause

  • Я знаю, что я получаю от своего поставщика услуг информацию о высвобождающем устройстве, потому что, если я использую свой Siemens 3800 Hipath через CSTA, я могу получить эту информацию.

Итак, золотой вопрос: как я могу узнать, кто является устройством, выпускающим в этой ситуации?

Ответы [ 2 ]

0 голосов
/ 30 сентября 2019

Единственный способ, которым я смог найти после прочтения документа Asterisk почти полностью, было чтение сообщений о событиях HangupRequest.

Поскольку я использую библиотеку AsterNet.AMI для подключения и управления моим Asterisk, поэтомуЯ немного изменил исходный код, чтобы обработчик события действительно читал событие HangupRequest.

Событие HangupRequest записывает сообщения, подобные следующему:

Event: HangupRequest
Privilege: call,all
Channel: SIP/8103-000001be
ChannelState: 6
ChannelStateDesc: Up
CallerIDNum: 8103
CallerIDName: Agent 8103
ConnectedLineNum: 51999887766
ConnectedLineName: 51999887766
Language: en
AccountCode:
Context: from-internal
Exten: 8100
Priority: 1
Uniqueid: 1569618521.446
Linkedid: 1569618519.445

Так что в соответствии с HangupRequestДокументация по событию Asterisk Я мог заметить, что канал в сообщении - это канал, связанный с высвобождающим устройством, а также CallerIDNum и CallerIDName.

Эта функция в настоящее время не реализована в библиотеке github, ноЯ собираюсь нажать там и попросить их включить в следующий выпуск.

Пока я не знаю, где прочитать эту информацию в FreePBX Admin.

0 голосов
/ 28 сентября 2019

Вы можете попробовать комбинацию параметров g и F в приложении Dial.Опция g позволяет выполнение плана набора номера, когда вызываемая сторона вешает трубку, а опция F позволяет вам продолжить выполнение с выбранным контекстом, расширением и приоритетом, если вызывающий абонент повесит трубку.Таким образом, вы можете понять, какая сторона вешает трубку по плану набора номера, выполняемому после завершения вызова.Здесь вы найдете дополнительную информацию об этих параметрах: https://www.voip -info.org / asterisk-cmd-dial /

...