837 просмотров
от (500 баллов) в категории Тонкая настройка
редактировать от

Здравствуйте!

Делаю всё по документации, в АТС вижу, что модуль успешно подключён к битрикс24.

Но сделать исходящий звонок из битрикс24 не могу.

На маршрутизаторе вижу, что входящие соединения идут, трафик не блокируется.

Куда смотреть? Что настраивать? Как решить? :)

Спасибо.

1 Ответ

от (122 тыс. баллов)
редактировать от

https://wiki.mikopbx.com/modules:b24crm:bitrixapp

Перейдите в раздел «Телефония» - «Настройки» (Пункт может быть спрятан в кнопке «Еще»). Настройте «Номер для исходящего звонка по-умолчанию» - укажите созданный ранее вебхук

P.S. Обнаружили два критичных бага в модуле. Будут исправлены в новой версии. 

от (500 баллов)
редактировать от
Это тоже сделано, прошу прощения, что забыл скрин-шот приложить. Исправил, добавил скрин-шот.
от (122 тыс. баллов)
из интернет должен быть доступен порт 80 вашей АТС.
битрикс обычно обращается с ip адреса 195.208.187.23, только с него
на Askozia проверьте настройки сетевого экрана
от (500 баллов)
Доступно.
Проверял с подразделения, адрес которого добавил для контроля, проверки
от (122 тыс. баллов)
приложите скриншот настроек сетевого экрана
приложите дамп трафика с АТС
https://wiki.mikopbx.com/faq:tcpdump
от (500 баллов)
Скрин-шот настроек сетевого экрана добавил, перехват трафика отправил в поддержку.
от (122 тыс. баллов)
Для каждого сотрудника следует указать внутренний номер и номер мобильного телефона.
Приложите и этот скриншот.
от (500 баллов)
Добавил, как из битрикса, так и с АТС скрин-шоты.
от (122 тыс. баллов)
Проанализировал дамп.

АТС приняла запрос от битрикс и обработала его.
Есть нюанс.
В одном из последних релизов была проблема с исходящими звонками из CTI клиентов:

Проверить можно выполнив команды:
dialplan show internal-originate

Должна быть строка
Dial(Local/${EXTEN}@internal-users/n$

Для выполнения описанной выше команды выполните инструкции:
https://wiki.mikopbx.com/faq:putty_log

Попробуйте обновиться до релиза:
https://github.com/telefon1c/MikoPBX/releases/tag/2019.4.5
от (500 баллов)
sip2*CLI> dialplan show internal-originate
[ Context 'internal-originate' created by 'pbx_config' ]
  '_X!' =>          1. NoOP(Hint ${HINT} exten ${EXTEN} )         [pbx_config]
                    2. ExecIf($["${extenfrom1c}x" != "x"]?NoCDR()) [pbx_config]
                    3. ExecIf($["${extenfrom1c}x" != "x"]?Set(CALLERID(num)=${pt1c_cid})) [pbx_config]
                    4. ExecIf($["${extenfrom1c}x" != "x"]?Set(CALLERID(name)=${pt1c_cid})) [pbx_config]
                    5. ExecIf($["${SIPADDHEADER}x" != "x"]?SIPaddheader(${SIPADDHEADER})) [pbx_config]
                    6. ExecIf($["${peer_mobile}x" != "x"]?Set(ADDITIONAL_PEER=&Local/${peer_mobile}@outgoing/n)) [pbx_config]
                    7. GosubIf($["${DIALPLAN_EXISTS(${CONTEXT}-custom,${EXTEN}),1}" == "1"]?${CONTEXT}-custom,${EXTEN},1) [pbx_config]
                    8. Dial(Local/${EXTEN}@internal-users/n${ADDITIONAL_PEER},60,TteKkHhb(originate_create_chan,s,1)) [pbx_config]

-= 1 extension (8 priorities) in 1 context. =-


>Для выполнения описанной выше команды выполните инструкции:
>https://wiki.mikopbx.com/faq:putty_log

Сделал, но при попытке позвонить из битрикс24 в консоли астериск ни одного сообщения.

Обновление до 2019.4.5 не изменило ситуацию.
от (122 тыс. баллов)
Давайте проверим:
Звонок совершается от имени пользователя
https://<PORTAL>/company/personal/user/584/

584 - это ID пользователя.

Набираемый номер телефона:
168

Токен web хука "application_token" начинается с:
oy62r731a5zh0xx

анализируем логи:

logread | grep 'Try call to'
должно быть пусто


Проверяем существует ли внутренний номер в плане набора АТС:
dialplan show 168@all_peers

По логу я не вижу внутреннего номера пользователя битрикс. Но для него лучше выполнить аналогичную проверку:
dialplan show <NUM>@internal-users
от (500 баллов)
Какие данные требуются от меня?
Просто через АТС я могу звонить на 168 и 170, между ними и на десятки других.
Если пробую сделать это с портала битрикс24. то ничего не получается.

sip2*CLI> dialplan show 168@all_peers
[ Context 'all_peers' created by 'pbx_config' ]
  '_.!' =>          1. ExecIf($[ "${EXTEN}" == "h" ]?Hangup())    [pbx_config]
                    2. Set(__FROM_CHAN=${CHANNEL})                [pbx_config]
                    3. ExecIf($["${OLD_LINKEDID}x" == "x"]?Set(__OLD_LINKEDID=${CDR(linkedid)})) [pbx_config]
                    4. ExecIf($["${CHANNEL(channeltype)}" != "Local"]?Gosub(set_from_peer,s,1)) [pbx_config]
                    5. ExecIf($["${CHANNEL(channeltype)}" == "Local"]?Gosub(set_orign_chan,s,1)) [pbx_config]
                    6. ExecIf($["${CALLERID(num)}x" == "x"]?Set(CALLERID(num)=${FROM_PEER})) [pbx_config]
                    7. ExecIf($["${CALLERID(num)}x" == "x"]?Set(CALLERID(name)=${FROM_PEER})) [pbx_config]
                    8. ExecIf($["${CHANNEL(channeltype)}" == "Local" && "${FROM_PEER}x" == "x"]?Set(__FROM_PEER=${CALLERID(num)})) [pbx_config]
                    9. Set(CHANNEL(hangup_handler_wipe)=hangup_handler,s,1) [pbx_config]
                    10. Gosub(${ISTRANSFER}dial,${EXTEN},1)       [pbx_config]
                    11. GosubIf($["${DIALPLAN_EXISTS(${CONTEXT}-custom,${EXTEN}),1}" == "1"]?${CONTEXT}-custom,${EXTEN},1) [pbx_config]
                    12. Goto(peer_${FROM_PEER},${EXTEN},1)        [pbx_config]

-= 1 extension (12 priorities) in 1 context. =-


sip2*CLI> dialplan show 168@internal-users
[ Context 'internal-users' created by 'pbx_config' ]
  '_X!' =>          1. Set(CHANNEL(hangup_handler_wipe)=hangup_handler,s,1) [pbx_config]
                    2. ExecIf($["${ISTRANSFER}x" != "x"]?Set(SIPADDHEADER01=${EMPTY_VAR}) [pbx_config]
                    3. ExecIf($["${CHANNEL(channeltype)}" == "Local"]?Gosub(set_orign_chan,s,1)) [pbx_config]
                    4. Gosub(${ISTRANSFER}dial,${EXTEN},1)        [pbx_config]
                    5. ExecIf($["${SIPPEER(${EXTEN},status)}x" == "x"]?Goto(internal-num-undefined,${EXTEN},1)) [pbx_config]
                    6. ExecIf($["${DEVICE_STATE(SIP/${EXTEN})}" == "BUSY"]?Set(DIALSTATUS=BUSY)) [pbx_config]
                    7. GotoIf($["${DEVICE_STATE(SIP/${EXTEN})}" == "BUSY"]?fw_start) [pbx_config]
                    8. Set(ringlength=${DB(FW_TIME/${EXTEN})})    [pbx_config]
                    9. ExecIf($["${ringlength}x" == "x" || "${QUEUE_SRC_CHAN}x" != "x"]?Set(ringlength=600)) [pbx_config]
                    10. GosubIf($["${DIALPLAN_EXISTS(${CONTEXT}-custom,${EXTEN}),1}" == "1"]?${CONTEXT}-custom,${EXTEN},1) [pbx_config]
                    11. Dial(SIP/${EXTEN},${ringlength},TtekKHhM(dial_answer)b(dial_create_chan,s,1)) [pbx_config]
     [fw_start]     12. NoOp(dial_hangup)                         [pbx_config]
                    13. ExecIf($["${DIALSTATUS}" != "ANSWER" && "${QUEUE_SRC_CHAN}x" == "x"]?Goto(internal-fw,${EXTEN},1)) [pbx_config]
                    14. ExecIf($["${BLINDTRANSFER}x" != "x"]?AGI(check_redirect.php,${BLINDTRANSFER})) [pbx_config]
                    15. Hangup()                                  [pbx_config]

-= 1 extension (15 priorities) in 1 context. =-
от (122 тыс. баллов)
в сообщении выше описал, что необходимо проверить.
- на АТС в настройках модуля проверьте application_token код акторизации web хука
- откройте ссылку https://<PORTAL>/company/personal/user/584/ убедитесь что внутренний номер заполнен у пользователя

выполните команды
dialplan show 168@all_peers
dialplan show <NUM>@internal-users

<NUM> вероятно равно 170
от (500 баллов)
1. Да, application_token код акторизации web хука начинается с oy62r731a5zh0xx
2. Да, заполнен. Есть скрин-шот в первом сообщении с этим номером.
3. sip2*CLI> dialplan show 168@all_peers
[ Context 'all_peers' created by 'pbx_config' ]
  '_.!' =>          1. ExecIf($[ "${EXTEN}" == "h" ]?Hangup())    [pbx_config]
                    2. Set(__FROM_CHAN=${CHANNEL})                [pbx_config]
                    3. ExecIf($["${OLD_LINKEDID}x" == "x"]?Set(__OLD_LINKEDID=${CDR(linkedid)})) [pbx_config]
                    4. ExecIf($["${CHANNEL(channeltype)}" != "Local"]?Gosub(set_from_peer,s,1)) [pbx_config]
                    5. ExecIf($["${CHANNEL(channeltype)}" == "Local"]?Gosub(set_orign_chan,s,1)) [pbx_config]
                    6. ExecIf($["${CALLERID(num)}x" == "x"]?Set(CALLERID(num)=${FROM_PEER})) [pbx_config]
                    7. ExecIf($["${CALLERID(num)}x" == "x"]?Set(CALLERID(name)=${FROM_PEER})) [pbx_config]
                    8. ExecIf($["${CHANNEL(channeltype)}" == "Local" && "${FROM_PEER}x" == "x"]?Set(__FROM_PEER=${CALLERID(num)})) [pbx_config]
                    9. Set(CHANNEL(hangup_handler_wipe)=hangup_handler,s,1) [pbx_config]
                    10. Gosub(${ISTRANSFER}dial,${EXTEN},1)       [pbx_config]
                    11. GosubIf($["${DIALPLAN_EXISTS(${CONTEXT}-custom,${EXTEN}),1}" == "1"]?${CONTEXT}-custom,${EXTEN},1) [pbx_config]
                    12. Goto(peer_${FROM_PEER},${EXTEN},1)        [pbx_config]

-= 1 extension (12 priorities) in 1 context. =-

4. sip2*CLI> dialplan show 170@internal-users
[ Context 'internal-users' created by 'pbx_config' ]
  '_X!' =>          1. Set(CHANNEL(hangup_handler_wipe)=hangup_handler,s,1) [pbx_config]
                    2. ExecIf($["${ISTRANSFER}x" != "x"]?Set(SIPADDHEADER01=${EMPTY_VAR}) [pbx_config]
                    3. ExecIf($["${CHANNEL(channeltype)}" == "Local"]?Gosub(set_orign_chan,s,1)) [pbx_config]
                    4. Gosub(${ISTRANSFER}dial,${EXTEN},1)        [pbx_config]
                    5. ExecIf($["${SIPPEER(${EXTEN},status)}x" == "x"]?Goto(internal-num-undefined,${EXTEN},1)) [pbx_config]
                    6. ExecIf($["${DEVICE_STATE(SIP/${EXTEN})}" == "BUSY"]?Set(DIALSTATUS=BUSY)) [pbx_config]
                    7. GotoIf($["${DEVICE_STATE(SIP/${EXTEN})}" == "BUSY"]?fw_start) [pbx_config]
                    8. Set(ringlength=${DB(FW_TIME/${EXTEN})})    [pbx_config]
                    9. ExecIf($["${ringlength}x" == "x" || "${QUEUE_SRC_CHAN}x" != "x"]?Set(ringlength=600)) [pbx_config]
                    10. GosubIf($["${DIALPLAN_EXISTS(${CONTEXT}-custom,${EXTEN}),1}" == "1"]?${CONTEXT}-custom,${EXTEN},1) [pbx_config]
                    11. Dial(SIP/${EXTEN},${ringlength},TtekKHhM(dial_answer)b(dial_create_chan,s,1)) [pbx_config]
     [fw_start]     12. NoOp(dial_hangup)                         [pbx_config]
                    13. ExecIf($["${DIALSTATUS}" != "ANSWER" && "${QUEUE_SRC_CHAN}x" == "x"]?Goto(internal-fw,${EXTEN},1)) [pbx_config]
                    14. ExecIf($["${BLINDTRANSFER}x" != "x"]?AGI(check_redirect.php,${BLINDTRANSFER})) [pbx_config]
                    15. Hangup()                                  [pbx_config]

-= 1 extension (15 priorities) in 1 context. =-
На этом сайте можно бесплатно задать вопрос разработчикам MikoPBX и другим членам сообщества. Время ответа не регламентированно, но мы стараемся несколько раз в день заглядывать сюда. Для срочного решения проблем обращайтесь на платную линию поддержки

Популярные теги

askozia входящие-вызовы настройка исходящие маршрутизация провайдер запись-разговоров входящие ivr исходящие-звонки обновление ошибка очередь провайдеры битрикс24 очередь-вызовов переадресация запись установка маршрут история-звонков mikopbx транк панель-телефонии-1с перевод-вызова перевод askozia7 askozia6 битрикс callerid интеграция голосовая-почта логи перехват-вызова ростелеком нерабочее-время факс модуль nat docker запись-разговора веб-интерфейс bitrix24 goip настройка-провайдер история диалплан почта журнал-звонков релиз gsm вызовы звонок внешние-номера web-интерфейс zabbix маршруты cdr sip панель pjsip переадресация-мобильный voicemail ascozia телефонная-книга аон мобильный звонков лицензирование вызовов редактор номер asterisk лицензия ami регистрация оповещения провайдеров время голосовая fax trunk разговоров группы-пользователей #mikopbx пропущенные-звонки донабор beeline monitoring тишина smtp cisco мобильные мультифон мегафон шлюз не-работает электронная-почта не-слышно-звук

2.8 тыс. вопросов

2.4 тыс. ответов

6.7 тыс. комментариев

465 тыс. пользователей

...