2015-01-15 13 views
0

Я новичок в Asterisk, поэтому любая помощь будет принята с благодарностью.Как сохранить удаленный идентификатор партии на CDR в Asterisk?

Я пытаюсь сохранить идентификатор удаленной стороны (CONNECTEDLINE) в таблице журналов CDR в переданных вызовах. В слепых передачах нет проблем, потому что я получаю идентификатор удаленной стороны в качестве идентификатора вызывающего абонента в поле src.

Принятые переводы Я теряю исходный идентификатор вызывающего абонента.

Это как передача идет:

  1. А вызывает В (А говорить с B)
  2. B имеет A, и призывает C (B разговор с C)
  3. B передает в C (Разговор с C)

Теперь, в таблице CDRs, я получаю две записи. Один для первого вызова (A < -> B), а другой для двух вторых вызовов (B < -> C и A < -> C). Точка находится во втором CDR. Я потерял любую ссылку на A.

Я хочу сохранить удаленный идентификатор партии (A) во втором CDR. Я уже добавил пользовательское поле в таблицу CDR (connectedID).

Я читал о редактировании некоторых конфигурационных файлов, добавление такого рода предложения:

"exten => s,1,set(CDR(connectedID)=${CONNECTEDLINE})" 

Однако, я совсем потерялся. Я не знаю, какой файл мне нужно редактировать, даже в какой части файла я должен поместить эти строки кода.

Может ли кто-нибудь указать мне в правильном направлении?

ответ

0

события Чтение вызовов через AMI (благодаря @arheops) я управлять, как сохранить Remote Party ID в CDR.

В hangup мероприятие мы можем видеть, что идентификатор удаленной стороны в поле ConnectedLineNum.

Для перенесенного вызова, как этот:

  • 401 называет 208
  • 208 вызовов 308 (401 на удержание)
  • 208 передает первоначальный вызов 308 (401 разговаривает с 308)

это hangup образец события для заключительного сегмента вызова.

Event Hangup Privilege: call,all Channel: SIP/308-00000665 Uniqueid: 1421757614.1658 CallerIDNum: 208 CallerIDName: Juan Ruiz ConnectedLineNum: 401 ConnectedLineName: Test1 Cause: 16 Cause-txt: Normal Clearing

Оригинал абонент хранится в ConnectedLineNum переменном.

Так что я добавить эту строку в раздел зависания:

exten => s,1,Set(CDR(connectedid)=${CONNECTEDLINE(number)})

Я использую Elastix 2.4.0, поэтому я добавил эту линию на самом начале из [macro-hangupcall] макроса в extensions_override_elastix.conf файле.

В других дистрибутивах на Asterisk это должно быть файл.

0

Вы можете использовать Func_SHARED, спасать Сида в общих переменных и сделать поиск по мостовом имени канала

Однако то, что все они требуют отладки и ваши собственные усилия.

http://www.voip-info.org/wiki/view/Asterisk+func+shared

Другой вариант сбора событий и remmember все трансферы

+0

Присутствующие передачи У меня нет значения перекрестных ссылок, которое я могу использовать для отслеживания двух частей вызова (у меня есть 4 разных канала, 2 для каждого сегмента вызова). Возможно, так работают мои мобильные телефоны. Однако я думаю, что Func_SHARED - это правильный подход, чтобы достичь того, что я спросил (в надлежащей среде). – ejuanillo

+0

Вы можете считывать события через AMI, будут связаны событиями связи/разблокировки (более 1 для передачи с участием), которые могут использоваться для определения результата. – arheops

+0

Спасибо @arheops, я попробую AMI события aproach. – ejuanillo