VIDEOCHAT  ::   FAQ  ::   Поиск  ::   Регистрация  ::   Вход

Поле Reason: Q.850; Cause=xx; text=bla-bla-bla - как выдрать

Проблемы Asterisk без вэб-оболочек и их решения

Модераторы: april22, Zavr2008

Ответить
Lonely_Ghost
Сообщения: 21
Зарегистрирован: 09 сен 2010, 11:29
Откуда: Украина, Киев

Поле Reason: Q.850; Cause=xx; text=bla-bla-bla - как выдрать

Сообщение Lonely_Ghost »

Всем привет.

Такая задача: в CDR(userfield) записывать коды отбоев по Q.850. Астериск их выдает, к примеру в этом SIP Response:

Код: Выделить всё

SIP/2.0 503 Service Unavailable
From: "3XXXXXX" <sip:3XXXXXX@XX.XX.XX.XX>;tag=r9ymemKZm09Hc
To: <sip:093XXXXXXX@YY.YY.YY.YY>;tag=as66f5b3c6
Call-ID: b7417c10-e2e3-122f-1599-0007e90acb8e
CSeq: 25222119 INVITE
Server: Session Border Controller
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO, PUBLISH
Supported: replaces, timer
Reason: Q.850;cause=34;text="no circuit/channel available"
Content-Length: 0
Вот и интересует, как выдрать из SIP Response значение поля:

Код: Выделить всё

Reason: Q.850;cause=34;text="no circuit/channel available"
И загнать в переменную? Хочу загнать потом в ${CDR(userfield)}. Дабы бородатым дядям-телефонистам, сенсеям по ОКС-7 была понятнее причина отбоя:)

${SIP_HEADER(Reason)} не канает, ибо работает только с INVITE.

Asterisk 10.2.1. Есть идеи?
ys1797
Сообщения: 240
Зарегистрирован: 28 июн 2011, 17:59

Re: Поле Reason: Q.850; Cause=xx; text=bla-bla-bla - как выд

Сообщение ys1797 »

Бздыч в "use_q850_reason" в sip.conf и смотрим hangupcause
Lonely_Ghost
Сообщения: 21
Зарегистрирован: 09 сен 2010, 11:29
Откуда: Украина, Киев

Re: Поле Reason: Q.850; Cause=xx; text=bla-bla-bla - как выд

Сообщение Lonely_Ghost »

Это не ответ.

Поле

Код: Выделить всё

Reason: Q.850;cause=34;text="no circuit/channel available"
приходит от Астериска благодаря use_q850_reason=yes в sip.conf.
И ${HANGUPCAUSE} тут не поможет. Перечитайте плз вопрос более вдумчиво.
Я хочу получить полностью весь текст

Код: Выделить всё

Q.850;cause=34;text="no circuit/channel available"
и загнать в CDR.
Vlad1983
Сообщения: 4251
Зарегистрирован: 09 авг 2011, 11:51

Re: Поле Reason: Q.850; Cause=xx; text=bla-bla-bla - как выд

Сообщение Vlad1983 »

сенсеи по ОКС-7 помнят все коды наизусть.
им достаточно только номера без текста.
ЛС: @rostel
Аватара пользователя
Obi Van
Сообщения: 340
Зарегистрирован: 03 сен 2010, 11:21

Re: Поле Reason: Q.850; Cause=xx; text=bla-bla-bla - как выд

Сообщение Obi Van »

Lonely_Ghost
Уже давно юзаю такое:

Код: Выделить всё

exten => log,n(send),JabberSend(asterisk,${JABBER_PEER_ADDR},"Исходящий вызов в ${STRFTIME(,,%Y-%m-%d)}_${STRFTIME(,,%H-%M-%S)} от ${CDR(src)} на номер ${dialed_num} длительностью ${ANSWEREDTIME} сек. был завершён со статусом HANGUPCAUSE = ${HANGUPCAUSE}. Статус вызова ${DIALSTATUS}. Оператор связи был '${CDR(accountcode)}'.")
Собсно говоря, тоже были мыслишки загонять статус в CDR, а также иметь текстовое поле для описания, вместо статусов 17 и 16. Не пришло вголову ничего иного как запилить базу, в которой сопоставлять цифры с текстом и валить в жабер. Чем даже сейчас удобна такая оповещалка. Человек после каждого вызова (если ему нужно) получает в джабер сообщение о прошлом вызове, что даёт возможность понять "почему всё время занято" и т.п. С текстом будет удобнее само собой. Вот времени запилить нет. :roll:
Lonely_Ghost
Сообщения: 21
Зарегистрирован: 09 сен 2010, 11:29
Откуда: Украина, Киев

Re: Поле Reason: Q.850; Cause=xx; text=bla-bla-bla - как выд

Сообщение Lonely_Ghost »

Да, с базой отбоев чем не варик... :)
Спс, щас бум мутить.
Lonely_Ghost
Сообщения: 21
Зарегистрирован: 09 сен 2010, 11:29
Откуда: Украина, Киев

Re: Поле Reason: Q.850; Cause=xx; text=bla-bla-bla - как выд

Сообщение Lonely_Ghost »

Та ниче не мешало :) Спросил на нескольких ресурсах. И что? Может у кого другая идея возникнет.
Это нормально, switch, не вижу причины возникать.
Ответить
© 2008 — 2024 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH