608 просмотров
от (120 баллов) в категории Настройка провайдеров
редактировать от
Здравствуйте.

У меня есть определённое количество статических телефонных номеров от провайдера. При звонке у клиента не высвечивается мой внешний номер а номер провайдера.

Как перенаправить внутренний на внешний?
от (122 тыс. баллов)

Что за "Провайдер" используется? 

Приведите пример, по описанию не совсем понятно. 

Возможно нужно в настройках провайдера описать расширенные опции, к примеру fromuser - от имени какого номера идет звонок. 

от (120 баллов)
Провайдер Sipgate

На странице провайдера нет не каких настроек. 
Это то что стоит на странице провайдера как решение данной проблемы.

[sipout]
exten => _X.,1,Set(CALLERID(number)=SIPID)
exten => _X.,n,SipAddHeader(P-Preferred-Identity: <sip:4921158000000@sipconnect.sipgate.de>)
exten => _X.,n,Dial(SIP/${EXTEN}@sipgate-out,30,trg)
exten => _X.,n,Hangup

Это мой extensions.conf

[SIP-12345-24-outgoing]
exten => _X!,1,Set(number=${ADDPLUS}${EXTEN})
	same => n,ExecIf($["${number}x" == "x"]?Hangup())
	same => n,Set(ROUTFOUND=1)
	same => n,Gosub(${ISTRANSFER}dial,${EXTEN},1)
	same => n,ExecIf($["${EXTERNALPHONE}" == "${EXTEN}"]?Set(DOPTIONS=tk))
	same => n,GosubIf($["${DIALPLAN_EXISTS(SIP-12345-outgoing-custom,${EXTEN},1)}" == "1"]?SIP-12345-outgoing-custom,${EXTEN},1)
	same => n,Dial(PJSIP/${number}@SIP-12345,600,${DOPTIONS}TKU(dial_answer)b(dial_create_chan,s,1))
	same => n,GosubIf($["${DIALPLAN_EXISTS(SIP-12345-outgoing-after-dial-custom,${EXTEN}),1}" == "1"]?SIP-12345-outgoing-after-dial-custom,${EXTEN},1)
	same => n,ExecIf($["${ISTRANSFER}x" != "x"]?Gosub(${ISTRANSFER}dial_hangup,${EXTEN},1))
	same => n,ExecIf($["${DIALSTATUS}" = "ANSWER"]?Hangup())
	same => n,Set(pt1c_UNIQUEID=${EMPTY_VALUE})
	same => n,return

Как связать эти два кода что-бы посылался тот номер который нужно а не центральный.

С уважением pbxuser

1 Ответ

от (122 тыс. баллов)

Будет выглядеть примерно так. Пробуйте. Отладить этот dialplan у меня нет возможности. Dialplan следует добавить в конец файла extensions.conf через меню "кастомизация системных файлов"

[SIP-12345-outgoing-custom]
exten => _X!,1,Ringing()
  same => n,Gosub(${ISTRANSFER}dial,${EXTEN},1)
  same => n,Dial(PJSIP/${number}@SIP-12345,600,${DOPTIONS}TKU(dial_answer)b(sipgate-create-chan,s,1))
  same => n,ExecIf($["${ISTRANSFER}x" != "x"]?Gosub(${ISTRANSFER}dial_hangup,${EXTEN},1))
  same => n,Set(pt1c_UNIQUEID=${EMPTY_VALUE})
  same => n,ExecIf($["${BLINDTRANSFER}x" != "x"]?AGI(check_redirect.php,${BLINDTRANSFER}))
  same => n,Hangup()

[sipgate-create-chan]
exten => s,1,Set(CALLERID(number)=SIPID); ??? тут точно должна быть строка "SIPID"
  same => n,Gosub(dial_create_chan,${EXTEN},1)
  same => n,Set(PJSIP_HEADER(add,P-Preferred-Identity)=<sip:4921158000000@sipconnect.sipgate.de>)
  same => n,return
от (120 баллов)
Спасибо за помощь

Телефонный номер изменяет, но не для одного конкретного телефона а для всех телефонов в сети которые звонят через провайдера. Как можно сделать так что бы это правило действовало только для одного телефона ? У каждого должен быть свой номер.

С уважением

pbxuser
от (520 баллов)

[SIP-12345-24-outgoing-custom]

exten => _X!,1,NoOp(для провайдера подмена внутреннего номера на город)

same => n,ExecIf($["${FROM_PEER}" == "внутренний_номер"]?Set(CALLERID(num)=внешний_номер))

same => n,ExecIf($["${FROM_PEER}" == "внутренний_номер2"]?Set(CALLERID(num)=внешний_номер2))

same => n,ExecIf($["${FROM_PEER}" == "внутренний_номер3"]?Set(CALLERID(num)=внешний_номер2))

внешний номер в формате код города и номер телефона слитно

внутренний номер телефона с которого идёт звонок 

от (122 тыс. баллов)

Вы пробовали использовать модуль Группы пользователей?

Он решает задачу установки "CALLERID(num)"  без кастомизации dialplan. 

Предложенная мной кастомизация необходима только для установки заголовка "P-Preferred-Identity". 

от (120 баллов)
Установил модуль Группы пользователей имеется код приведённый ниже. Теперь надо как то интегрировать
строку.
same => n,Set(PJSIP_HEADER(add,P-Preferred-Identity)=<sip:4922222222222@sipconnect.sipgate.de>)
между  ModuleUsersGroups START и ModuleUsersGroups END
"4922222222222" декларировать как переменную

[SIP-1234567-24-outgoing]
exten => _X!,1,Set(number=${ADDPLUS}${EXTEN})
    ; --- ModuleUsersGroups START ---
    same => n,ExecIf($["x${FROM_PEER}" == "x" && "${CHANNEL(channeltype)}" == "PJSIP" ]?Gosub(set_from_peer,s,1))
    same => n,Set(GR_VARS=${DB(UsersGroups/${FROM_PEER})})
    same => n,ExecIf($["${GR_VARS}x" != "x"]?Exec(MSet(${GR_VARS})))
    same => n,ExecIf($["${GR_PERM_ENABLE}" == "1" && "${GR_ID_24}" != "1"]?return)
    same => n,ExecIf($["${GR_PERM_ENABLE}" == "1" && "${GR_CID_24}x" != "x"]?MSet(GR_OLD_CALLERID=${CALLERID(num)},CALLERID(num)=${GR_CID_24}))
    ; --- ModuleUsersGroups END ---
    same => n,ExecIf($["${number}x" == "x"]?Hangup())
    same => n,Set(ROUTFOUND=1)
    same => n,Gosub(${ISTRANSFER}dial,${EXTEN},1)
    same => n,ExecIf($["${EXTERNALPHONE}" == "${EXTEN}"]?Set(DOPTIONS=tk))
    same => n,GosubIf($["${DIALPLAN_EXISTS(SIP-1234567-outgoing-custom,${EXTEN},1)}" == "1"]?SIP-1234567-outgoing-custom,${EXTEN},1)
    same => n,Dial(PJSIP/${number}@SIP-1234567,600,${DOPTIONS}TKU(dial_answer)b(dial_create_chan,s,1))
    ; --- ModuleUsersGroups START ---
    same => n,ExecIf($["${GR_PERM_ENABLE}" == "1" && "${GR_OLD_CALLERID}x" != "x"]?MSet(CALLERID(num)=${GR_OLD_CALLERID},GR_OLD_CALLERID=${UNDEFINED}))
    ; --- ModuleUsersGroups END ---
    same => n,GosubIf($["${DIALPLAN_EXISTS(SIP-1234567-outgoing-after-dial-custom,${EXTEN}),1}" == "1"]?SIP-1234567-outgoing-after-dial-custom,${EXTEN},1)
    same => n,ExecIf($["${ISTRANSFER}x" != "x"]?Gosub(${ISTRANSFER}dial_hangup,${EXTEN},1))
    same => n,ExecIf($["${DIALSTATUS}" = "ANSWER"]?Hangup())
    same => n,Set(pt1c_UNIQUEID=${EMPTY_VALUE})
    same => n,return

С уважением
pbxuser
от (122 тыс. баллов)

4922222222222 - что можно быть тут?  CALLERID(num)? 

Какая связь между этим значением и CALLERID(num)? 

Могу предположить, что они равны, тогда лучше использовать переменную ${CALLERID(num)}

между  ModuleUsersGroups START и ModuleUsersGroups END

между этими комментариями вставить ничего не выйдет. 

от (120 баллов)
Мне кажеться "CALLERID(number)" это номер который который я набираю на телефоне мне надо внутренний номер телефонного аппарата

[sipgate-create-chan]
exten => s,1,Set((${CALLERID(number):0:3})=444)
   same => n,Gosub(dial_create_chan,${EXTEN},1)
   same => n,Set(PJSIP_HEADER(add,P-Preferred-Identity)=<sip:12345@sipconnect.sipgate.de>)
   same => n,return

С уважением
pbxuser
от (122 тыс. баллов)

Не пытайтесь править значение CALLERID(num) - обратите внимание на написание, не number а num. Это значение можно установить через интерфейс "Групп пользователей", для каждого сотрудника создайте индивидуальную группу и укажите для него исходящий callerid. 

Если "CALLERID(num)" должен быть равен внутреннему номеру - то вообще ничего менять не нужно, и группы пользователей следует отключить. По умолчанию передается именно номер абонента, который совершает вызов, как раз внутренний номер. 

от (120 баллов)
Проблема в том что плагин "Группы пользователей" Имеет параметр "callerid" но не учитывает "P-Preferred-Identity". Одного "callerid" для данного провайдера не достаточно. Надо чтобы посылалось "P-Preferred-Identity" для каждого номера тогда абонент видит правильный внешний номер а не номер провайдера.

С уважением
pbxuser
от (122 тыс. баллов)

Это понятно, комбинируйте. 

"Группы пользователей" используйте для установки Callerid. Описанный выше способ кастомизации для установки P-Preferred-Identity

от (120 баллов)
Не получается изменить телефон ный номер для каждого пользователя если я его меняю выше перечислиным способом то он изменяется для всех а не для одного конкретного пользователя.

С уважениемp

pbxuser
от (122 тыс. баллов)

Я до сих пор не понял какие требования у вашего провайдера. 

Могу лишь предположить, что при исходящем нужно обязательно установить CALLERID(NUM) и в заголовке "P-Preferred-Identity" установить то же значение 

Должно выглядеть примерно так:

same => n,Set(PJSIP_HEADER(add,P-Preferred-Identity)=<sip:${CALLERID(NUM)}@sipconnect.sipgate.de>)

Само значение "CALLERID(NUM)" задается через группы пользователей. 

Если так не сработает, то пишите провайдеру, пусть прокомментируют что не так и где поправить. 

Провайдеру лучше отправить дамп звонка:

от (120 баллов)
[sipgate-create-chan]
exten => s,1,Set(CALLERID(NUM)=222);
  same => n,Gosub(dial_create_chan,${EXTEN},1)
  same => n,Set(PJSIP_HEADER(add,P-Preferred-Identity)=<sip:${CALLERID(NUM)}@sipconnect.sipgate.de>)
  same => n,return

В таком случае у абонента высвечивается 00222  если я ставлю в место 222 цифру 223 тогда высвечивается 00223

Надо как-то так Внешний=CALLERID(Внутрений)
от (122 тыс. баллов)

Пытаюсь осмыслить. Но пока не получается ( 

Вы опилите немного иначе задачу. 

Вот пример:

Есть сотрудник с внутренним номером 204

При исходящем звонке callerid(num) нужно установить в значение ----.

"P-Preferred-Identity" нужно установить в значение ----

В этом случае клиент (тот, кому звонит сотрудник) увидит внешний номер ----. 

На мой взгляд в этом обсуждение уже есть все необходимое для реализации. 

от (122 тыс. баллов)
пример приведите для нескольких сотрудников.
от (120 баллов)
Я заметил через логи Asterisk  что  CALLERID(num) в  "[sipgate-create-chan]"  изменяется из номера внешнего на номер внутренний. Проблему  удалось решить через передачу переменной из одного контекста в другой. Сейчас всё работает как надо. Спасибо за помощь.

[SIP-1234567-outgoing-custom]

exten => _X!,1,Ringing()
  same => n,Gosub(${ISTRANSFER}dial,${EXTEN},1)
  same => n,Set(__publictel=${CALLERID(num)})
  same => n,Dial(PJSIP/${number}@SIP-1234567,600,${DOPTIONS}TKU(dial_answer)b(sipgate-create-chan,s,1))
  same => n,ExecIf($["${ISTRANSFER}x" != "x"]?Gosub(${ISTRANSFER}dial_hangup,${EXTEN},1))
  same => n,Set(pt1c_UNIQUEID=${EMPTY_VALUE})
  same => n,ExecIf($["${BLINDTRANSFER}x" != "x"]?AGI(check_redirect.php,${BLINDTRANSFER}))
  same => n,Hangup()

[sipgate-create-chan]
exten => s,1,Noop()
exten => s,n,Set(PJSIP_HEADER(add,P-Preferred-Identity)=<sip:${publictel}@pconnect.sipgate.de>)
exten => s,n,Return
На этом сайте можно бесплатно задать вопрос разработчикам 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 тыс. пользователей

...