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

Входящая маршрутимация

Новичком считается только что прочитавший «Астериск - будущее телефонии»
http://asterisk.ru/knowledgebase/books
и пытающийся сделать большее

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

ded
Сообщения: 15625
Зарегистрирован: 26 авг 2010, 19:00

Re: Входящая маршрутимация

Сообщение ded »

В настройках телефона начальника укажите в поле Outbound caller ID номер секретарши.
yur4ik
Сообщения: 97
Зарегистрирован: 18 фев 2013, 16:56
Откуда: Израиль , Тель-Авив

Re: Входящая маршрутимация

Сообщение yur4ik »

Как вариант да , но при условии что есть несколько Outbound Caller ID и есть раграничение в исходящих номерах , один секрктаря , а другой отдела продаж . Здесь же все номера выходят с одним Outbound Caller ID и он же служит как входящий на IVR .
yur4ik
Сообщения: 97
Зарегистрирован: 18 фев 2013, 16:56
Откуда: Израиль , Тель-Авив

Re: Входящая маршрутимация

Сообщение yur4ik »

Добрый день , я опять к вам за помощью .
Возникла проблема с dynamic_did которую удалось разрешить в этой же теме ранее у другого клиента . Настройки те же , система ( FreePBX ) точь в точь такая же , проблема видна в логах входящего звонка :
PRIME_BBCODE_SPOILER_SHOW PRIME_BBCODE_SPOILER: Входящий звонок
Executing [03612ХХХХ@dynamic_did:1] Set("SIP/pop4voip-00000000", "CHANNEL(language)=he") in new stack
-- Executing [03612ХХХХ@dynamic_did:2] Set("SIP/pop4voip-00000000", "CALLID=052889YYYY") in new stack
-- Executing [03612ХХХХ@dynamic_did:3] MYSQL("SIP/pop4voip-00000000", "Connect connidcdr localhost user pass asteriskcdrdb utf8") in new stack
-- Executing [03612ХХХХ@dynamic_did:4] MYSQL("SIP/pop4voip-00000000", "Query resultidcdr 1 SELECT * FROM cdr WHERE dst LIKE '%052889YYYY%' AND disposition LIKE 'NO ANSWER' ORDER BY calldate DESC") in new stack
-- Executing [03612ХХХХ@dynamic_did:5] MYSQL("SIP/pop4voip-00000000", "Fetch fetchid 2 accid calldate clid src dst") in new stack
[2019-03-27 12:23:54] WARNING[13176][C-00000000]: app_mysql.c:485 aMYSQL_fetch: ast_MYSQL_fetch: More fields (23) than variables (5)
-- Executing [03612ХХХХ@dynamic_did:6] Set("SIP/pop4voip-00000000", "number=052889YYYY") in new stack
-- Executing [03612ХХХХ@dynamic_did:7] NoOp("SIP/pop4voip-00000000", "caller --> 777 callee --> from-internal") in new stack
-- Executing [03612ХХХХ@dynamic_did:8] GotoIf("SIP/pop4voip-00000000", "0?nodst:dst") in new stack
-- Goto (dynamic_did,03612ХХХХ,9)
-- Executing [03612ХХХХ@dynamic_did:9] MYSQL("SIP/pop4voip-00000000", "Clear 2") in new stack
-- Executing [03612ХХХХ@dynamic_did:10] MYSQL("SIP/pop4voip-00000000", "Disconnect 1") in new stack
-- Executing [03612ХХХХ@dynamic_did:11] Dial("SIP/pop4voip-00000000", "SIP/052889YYYY,20,tT") in new stack
[2019-03-27 12:23:54] WARNING[13176][C-00000000]: chan_sip.c:6163 create_addr: Purely numeric hostname (052889YYYY), and not a peer--rejecting!
[2019-03-27 12:23:54] WARNING[13176][C-00000000]: app_dial.c:2437 dial_exec_full: Unable to create channel of type 'SIP' (cause 20 - Subscriber absent)
== Everyone is busy/congested at this time (1:0/0/1)
-- Executing [03612ХХХХ@dynamic_did:12] GotoIf("SIP/pop4voip-00000000", "0?nodst") in new stack
-- Executing [03612ХХХХ@dynamic_did:13] GotoIf("SIP/pop4voip-00000000", "0?nodst") in new stack
-- Executing [03612ХХХХ@dynamic_did:14] GotoIf("SIP/pop4voip-00000000", "0?nodst") in new stack
-- Executing [03612ХХХХ@dynamic_did:15] MYSQL("SIP/pop4voip-00000000", "Clear 2") in new stack
[2019-03-27 12:23:54] WARNING[13176][C-00000000]: app_mysql.c:194 find_identifier: Identifier 2, identifier_type 2 not found in identifier list
[2019-03-27 12:23:54] WARNING[13176][C-00000000]: app_mysql.c:520 aMYSQL_clear: Invalid result identifier 2 passed in aMYSQL_clear
-- Executing [03612ХХХХ@dynamic_did:16] MYSQL("SIP/pop4voip-00000000", "Disconnect 1") in new stack
[2019-03-27 12:23:54] WARNING[13176][C-00000000]: app_mysql.c:194 find_identifier: Identifier 1, identifier_type 1 not found in identifier list
[2019-03-27 12:23:54] WARNING[13176][C-00000000]: app_mysql.c:537 aMYSQL_disconnect: Invalid connection identifier 1 passed in aMYSQL_disconnect
-- Executing [03612ХХХХ@dynamic_did:17] Goto("SIP/pop4voip-00000000", "from-trunk,,1") in new stack
-- Goto (from-trunk,03612ХХХХ,1)
Вопрос , почему при входящем звонке и обработке context=dynamic_did получается callee --> from-internal хотя должен быть набранный экстеншеном номер , в данном случае - 052889YYYY и соответственно далее неправильная обработка всего контекста
Executing [03612ХХХХ@dynamic_did:11] Dial("SIP/pop4voip-00000000", "SIP/052889YYYY,20,tT") in new stack вместо
Executing [03612ХХХХ@dynamic_did:11] Dial("SIP/pop4voip-00000000", "SIP/777,20,tT") in new stack

Или я что то "намудрил" или я чего то недопонимаю ...
Зарание спасибо все кто хоть как то откликнеться .
ded
Сообщения: 15625
Зарегистрирован: 26 авг 2010, 19:00

Re: Входящая маршрутимация

Сообщение ded »

А вы сами написали эту пред-бработку? Контекст dynamic_did?

Допустим. Хотя тут всё в логе настолько очевидно, что вопросов не должно было возникнуть.

-- Executing [03612ХХХХ@dynamic_did:5] MYSQL("SIP/pop4voip-00000000", "Fetch fetchid 2 accid calldate clid src dst") - будете заполнять переменные данными из MySQL-запроса?
[2019-03-27 12:23:54] WARNING[13176][C-00000000]: app_mysql.c:485 aMYSQL_fetch: ast_MYSQL_fetch: More fields (23) than variables (5) - ничего, что он говорит, про 23 значения, которые вы пытаетесь засунуть в 5 переменных?

-- Executing [03612ХХХХ@dynamic_did:6] Set("SIP/pop4voip-00000000", "number=052889YYYY") -- в непонятную никому, кроме автора переменную number засовывается номер 052889YYYY. Это номер кто звонит (Caller ID)? Это номер куда он позвонил (DID)? Это номер внутреннего абонента (777), который должен обслужить этот вызов?

-- Executing [03612ХХХХ@dynamic_did:7] NoOp("SIP/pop4voip-00000000", "caller --> 777 callee --> from-internal") -- согласно общепринятой терминологии caller, кто звонит, номер А, callee - кому звонят, номер Б - DID или номер внутреннего абонента, который должен обслужить этот вызов.
Вместо этого - чушь (извините), которая и отрабатывается криво.

Если эти пояснения не помогут - в раздел Бизнес.
yur4ik
Сообщения: 97
Зарегистрирован: 18 фев 2013, 16:56
Откуда: Израиль , Тель-Авив

Re: Входящая маршрутимация

Сообщение yur4ik »

А вы сами написали эту пред-бработку? Контекст dynamic_did?
Честно , нет , нашел на просторах интернета , тема и описание встречаются довольно часто . К слову сказать , Вы мне помогли в прошлый раз по этому же вопросу ( в этой же теме , несколькими постами ранее ) и там все работает как надо .
-- Executing [03612ХХХХ@dynamic_did:5] MYSQL("SIP/pop4voip-00000000", "Fetch fetchid 2 accid calldate clid src dst") - будете заполнять переменные данными из MySQL-запроса?
Да , вот же запрос в самом контексте
PRIME_BBCODE_SPOILER_SHOW PRIME_BBCODE_SPOILER: Запрос
exten => _X.,n,MYSQL(Connect connidcdr localhost userdb passworddb asteriskcdrdb utf8)
;; All CALL
exten => _X.,n,MYSQL(Query resultidcdr ${connidcdr} SELECT * FROM cdr WHERE dst LIKE '%${CALLID}%' ORDER BY calldate DESC)
;; NOANSWER CALL ONLY
;;exten => _X.,n,MYSQL(Query resultidcdr ${connidcdr} SELECT * FROM cdr WHERE dst LIKE '%${CALLID}%' AND disposition LIKE 'NO ANSWER' ORDER BY calldate DESC)
;;
exten => _X.,n,MYSQL(Fetch fetchid ${resultidcdr} accid calldate clid src dst)
[2019-03-27 12:23:54] WARNING[13176][C-00000000]: app_mysql.c:485 aMYSQL_fetch: ast_MYSQL_fetch: More fields (23) than variables (5) - ничего, что он говорит, про 23 значения, которые вы пытаетесь засунуть в 5 переменных?
Ну по тому как Вы спросили , я так понимаю что не совсем хорошо , но это работает на других серверах и особо не мешает .
-- Executing [03612ХХХХ@dynamic_did:6] Set("SIP/pop4voip-00000000", "number=052889YYYY") -- в непонятную никому, кроме автора переменную number засовывается номер 052889YYYY. Это номер кто звонит (Caller ID)? Это номер куда он позвонил (DID)? Это номер внутреннего абонента (777), который должен обслужить этот вызов?
Но в контексте же есть строка , вот - exten => _X.,n,Set(number=${src}) , а при запросе в MySQL {src} у нас получется 777 экстеншен и {dst} номер на который звонил этот экстеншен 052889YYYY . Поэтому и возник вопрос , почему вот здесь
-- Executing [03612ХХХХ@dynamic_did:7] NoOp("SIP/pop4voip-00000000", "caller --> 777 callee --> from-internal"
мне выдает caller --> 777 , что соответствует {src} , а вот {dst} ---> выдает from-internal вместо набранного номера .
Вместо этого - чушь (извините), которая и отрабатывается криво.
Согласен , поэтому и задал вопрос .
Если эти пояснения не помогут - в раздел Бизнес
Поверьте , если бы не было желания разбираться самому , уже давно нашел бы кому заплатить что бы сделали ..
ded
Сообщения: 15625
Зарегистрирован: 26 авг 2010, 19:00

Re: Входящая маршрутимация

Сообщение ded »

OK, разбирайтесь сами. Но тогда при чём тут форум?
Я сам разбираюсь - ищу и пробую.
Не сам разбираюсь - зову других, пишу на форуме: "Помогите! Не разобрался!"
У вас запрос из базы отдаёт 23 значения, из которых вы берёте какие-то 5 значений. Одно значение - мимо. Если владеете SQL командами , выполните
SELECT * FROM cdr WHERE dst LIKE '%${CALLID}%' ORDER BY calldate DESC
и можете посмотреть все эти значения и найти ошибку, что в переменную dst или как там обозначили берётся значение не из той клеточки. Это настолько очевидно, что нет смысла переписываться тут.
Главная ошибка: вы пытаетесь выгребать данные для выполняющегося звонка из cdr, а ведь он туда ещё не записан, транзакция не закрыта.

Концепцию этого форум помните? При регистрации?
yur4ik
Сообщения: 97
Зарегистрирован: 18 фев 2013, 16:56
Откуда: Израиль , Тель-Авив

Re: Входящая маршрутимация

Сообщение yur4ik »

OK, разбирайтесь сами. Но тогда при чём тут форум?
Я сам разбираюсь - ищу и пробую.
Не сам разбираюсь - зову других, пишу на форуме: "Помогите! Не разобрался!"
Ну зачем Вы так , я же не прошу решить за меня поставленную задачу . Я пытаюсь найти проблему в поисках по интернету , в частности спрашиая и здесь на форуме . То что я пытаюсь сделать и с чем у меня возникают вопросы я выкладываю здесь на форуме в попытке найти помощь в решении задачи .
У вас запрос из базы отдаёт 23 значения, из которых вы берёте какие-то 5 значений. Одно значение - мимо. Если владеете SQL командами , выполните
SELECT * FROM cdr WHERE dst LIKE '%${CALLID}%' ORDER BY calldate DESC
Подправил запрос в контексте и теперь он выглядит так :
exten => _X.,n,MYSQL(Query resultidcdr ${connidcdr} SELECT calldate,src,dst,disposition FROM cdr WHERE dst LIKE ${CALLERID(num)} AND disposition LIKE 'NO ANSWER' ORDER BY calldate DESC)
Теперь в логах стало почище , но
PRIME_BBCODE_SPOILER_SHOW PRIME_BBCODE_SPOILER: Все равно не срабатывает
-- Executing [03612XXXX@dynamic_did:1] Set("SIP/pop4voip-00000726", "CHANNEL(language)=he") in new stack
-- Executing [03612XXXX@dynamic_did:2] Set("SIP/pop4voip-00000726", "CALLID=05288YYYYY") in new stack
-- Executing [03612XXXX@dynamic_did:3] MYSQL("SIP/pop4voip-00000726", "Connect connidcdr localhost user password asteriskcdrdb utf8") in new stack
-- Executing [03612XXXX@dynamic_did:4] MYSQL("SIP/pop4voip-00000726", "Query resultidcdr 1 SELECT calldate,src,dst,disposition FROM cdr WHERE dst LIKE 05288YYYYY AND disposition LIKE 'NO ANSWER' ORDER BY calldate DESC") in new stack
-- Executing [03612XXXX@dynamic_did:5] MYSQL("SIP/pop4voip-00000726", "Fetch fetchid 2 accid calldate clid src dst") in new stack
-- Executing [03612XXXX@dynamic_did:6] Set("SIP/pop4voip-00000726", "number=") in new stack
-- Executing [03612XXXX@dynamic_did:7] NoOp("SIP/pop4voip-00000726", "caller --> callee --> ") in new stack
-- Executing [03612XXXX@dynamic_did:8] GotoIf("SIP/pop4voip-00000726", "1?nodst:dst") in new stack
-- Goto (dynamic_did,03612XXXX,15)
-- Executing [03612XXXX@dynamic_did:15] MYSQL("SIP/pop4voip-00000726", "Clear 2") in new stack
-- Executing [03612XXXX@dynamic_did:16] MYSQL("SIP/pop4voip-00000726", "Disconnect 1") in new stack
-- Executing [03612XXXX@dynamic_did:17] Goto("SIP/pop4voip-00000726", "from-trunk,,1") in new stack
-- Goto (from-trunk,03612XXXX,1)
Я не могу понять почему до сих пор вот в этом пункте контекста :
- exten => _X.,n,Set(number=${src})
не подставляется номер экстеншена если при запросе к ДБ все данные правильны
-- Executing [03612XXXX@dynamic_did:6] Set("SIP/pop4voip-00000726", "number=") in new stack
PRIME_BBCODE_SPOILER_SHOW PRIME_BBCODE_SPOILER: запрос к ДБ
mysql> SELECT calldate,src,dst,disposition FROM cdr WHERE dst LIKE '05288YYYYY' AND disposition LIKE 'NO ANSWER' ORDER BY calldate DESC;
+---------------------+-----+------------+-------------+
| calldate | src | dst | disposition |
+---------------------+-----+------------+-------------+
| 2019-03-28 12:01:59 | 777 | 05288YYYYY | NO ANSWER |
| 2019-03-28 11:18:43 | 777 | 05288YYYYY | NO ANSWER |
| 2019-03-28 10:25:05 | 777 | 05288YYYYY | NO ANSWER |
| 2019-03-27 11:48:02 | 777 | 05288YYYYY | NO ANSWER |
| 2019-03-27 11:42:54 | 777 | 05288YYYYY | NO ANSWER |
В ответе из ДБ видно и {src} и {dst} правильно , но они не отрабатываются в контексте .
Главная ошибка: вы пытаетесь выгребать данные для выполняющегося звонка из cdr, а ведь он туда ещё не записан, транзакция не закрыта
Почему не закрыта ? Я же пытаюсь вернуться с номера который записан уже в cdr как NO ANSWER на экстеншен который мне звонил .
ded
Сообщения: 15625
Зарегистрирован: 26 авг 2010, 19:00

Re: Входящая маршрутимация

Сообщение ded »

При запросе в ДБ
-- Executing [03612XXXX@dynamic_did:5] MYSQL("SIP/pop4voip-00000726", "Fetch fetchid 2 accid calldate clid src dst") in new stack
неизвестно что получено. Перед роковой строкой
exten => _X.,n,Set(number=${src})
можете поставить проверку
exten => _X.,n,NoOp( calldate=${calldate} and src=${src} and dst=${dst} )
и увидеть что там есть. Всё остальное - уже следствия этого запроса.
-- Executing [03612XXXX@dynamic_did:6] Set("SIP/pop4voip-00000726", "number=") - - - тут нет ничего,
-- Executing [03612XXXX@dynamic_did:7] NoOp("SIP/pop4voip-00000726", "caller --> callee --> ") in new stack и тут нет ничего.
Давайте лучше будете читать и делать, а не писать?
yur4ik
Сообщения: 97
Зарегистрирован: 18 фев 2013, 16:56
Откуда: Израиль , Тель-Авив

Re: Входящая маршрутимация

Сообщение yur4ik »

Вообщем у данного клиента все заработало при таком запросе к MySQL :
exten => _X.,n,MYSQL(Query resultidcdr ${connidcdr} SELECT calldate,src,dst,disposition FROM cdr WHERE dst LIKE '%${CALLID}%' AND calldate > ( now() - interval 1 day) AND disposition = "NO ANSWER" ORDER BY calldate DESC)

Т.е. разница в запросе dst LIKE , изначально , что у меня не работало это было - dst LIKE ${CALLERID(num)} , а сработало без указания (num) .
В любом случае всем спасибо .
Аватара пользователя
zzuz
Сообщения: 1658
Зарегистрирован: 21 сен 2010, 13:33
Контактная информация:

Re: Входящая маршрутимация

Сообщение zzuz »

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