Пожалуйста, войдите здесь. Часто задаваемые вопросы О нас
Задайте Ваш вопрос

Поле Reason: Q.850; Cause=xx; text=bla-bla-bla - как выдрать из SIP Response Астериска?

1

Всем привет.

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

SIP/2.0 503 Service Unavailable
Via: SIP/2.0/UDP XX.XX.XX.XX;branch=z9hG4bKZ345HKpg4a17N;received=XX.XX.XX.XX;rport=5060
From: "380937512556" <sip:380937512556@XX.XX.XX.XX>;tag=r9ymemKZm09Hc
To: <sip:0936231872@YY.YY.YY.YY>;tag=as66f5b3c6
Call-ID: b7417c10-e2e3-122f-1599-0007e90acb8e
CSeq: 25222119 INVITE
Server: ITCOM SBC
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO, PUBLISH
Supported: replaces, timer
Reason: Q.850;cause=34
Content-Length: 0

Вот и интересует, как выдрать значение поля:

Reason: Q.850;cause=34

И загнать в переменную? Хочу загнать потом в ${CDR(userfield)}. Дабы бородатым дядям-телефонистам, сенсеям по ОКС-7 была понятнее причина отбоя:)

${SIP_HEADER(Reason)} не канает, пусто.

Asterisk 10.2.0. Есть идеи?

удалить закрыть спам изменить тег редактировать

спросил 2012-03-10 22:36:46 +0400

mistral Gravatar mistral flag of Ukraine
370 2 5 19

обновил 2012-03-10 22:42:22 +0400

Comments

2

сип хеадер работает только с инвайтом. для других сообщений в * ничего нет. но вобщемто вписать это конкретное действие в chan_sip задачана пару часов.

meral ( 2012-03-11 07:31:50 +0400 )редактировать

1 Ответ

0
ссылка удалить спам редактировать

ответил 2012-03-10 22:42:13 +0400

switch Gravatar switch
8334 11 7 92
http://lynks.ru/

Comments

и что? это я знаю. и про маппинг SIP-ISUP тоже знаю. Ну получу я эту цифру, дальше что? Проще выдрать хедер, дабы не плодить кучу GotoIf'ов с проверкой ${HANGUPCAUSE}. Помимо этого еще и "text=" присутствует, это еще стопиццот Set'ов лупить? :) Увольте :)

mistral ( 2012-03-10 22:47:51 +0400 )редактировать

Ты спросил про коды отбоев, т.е. про цифру. В поле Reason тоже цифру имеешь. Что еще надо? Каков вопрос, таков ответ.

switch ( 2012-03-10 22:50:50 +0400 )редактировать

я спросил, как выдрать полностью значение - Q.850;cause=34. А не просто цифру. С одной цифрой - я бы не заморачивался, с ней и так все предельно ясно :).

mistral ( 2012-03-10 22:52:46 +0400 )редактировать

А зачем оно тебе полностью?

switch ( 2012-03-10 22:54:16 +0400 )редактировать

Есть на то причины. Иначе бы не распинался тут.

mistral ( 2012-03-10 22:56:43 +0400 )редактировать

ну сделай что-то вроде этого:

set(CDR(userfield)="Q.850\;cause=${HANGUPCAUSE}")

switch ( 2012-03-10 22:59:00 +0400 )редактировать

Ok. Приходит например: Reason: Q.850; cause=3; text=No route to destination; Где "text=No route to destination;" брать?

mistral ( 2012-03-10 23:03:26 +0400 )редактировать

Без понятия. Вообще в этом поле может быть что угодно, ведь это поле возвращает другое оборудование. Мне на ум ничего не приходит. Пили астериск. Хотя я записывал бы числовые значения в базу, ведь по ним в дальнейшей обработке всегда можно подставить текстовую расшифровку.

switch ( 2012-03-10 23:08:14 +0400 )редактировать

Ваш ответ

Please start posting your answer anonymously - your answer will be saved within the current session and published after you log in or create a new account. Please try to give a substantial answer, for discussions, please use comments and please do remember to vote (after you log in)!
[скрыть предварительный просмотр]

Закладки и информация

Добавить закладку

подписаться на rss ленту новостей

Статистика

Задан: 2012-03-10 22:36:46 +0400

Просмотрен: 1,720 раз

Обновлен: Mar 10 '12

Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией GNU GPL.