Добрый день. Стоит FreePBX. Возникла необходимость реализовать передачу АОН звонящего абонента при переводе звонков между внутренними номерами. На просторах интернета нашел, что нужно добавить следующий текст:
[from-trunk]
exten => 222333,1,Set(__CID=${CALLERID(number)})
[from-internal]
exten => _[1-5]XX,1,ExecIf($[ ${LEN(${BLINDTRANSFER})} > 0 ]?
Set(TRANSFERUSER=${BLINDTRANSFER}) )
exten => _[1-5]XX,n,ExecIf($[ ${LEN(${TRANSFERERNAME})} > 0 ]?Set(TRANSFERUSER=${TRANSFERERNAME}) )
exten => _[1-5]XX,n,ExecIf($[ ${LEN(${TRANSFERUSER})} > 0 ]? Set(TRANSFERUSER=${CUT(TRANSFERUSER,-,1)}) )
exten => _[1-5]XX,n,ExecIf($[ ${LEN(${TRANSFERUSER})} > 0 ]? Set(TRANSFERUSER=${CUT(TRANSFERUSER,\/,2)}) )
exten => _[1-5]XX,n,ExecIf($[ "foo${TRANSFERUSER}" = "foo" ]?Set(__CID=${CALLERID(number)}) )
exten => _[1-5]XX,n,ExecIf($[ ${LEN(${TRANSFERUSER})} > 0 ]?Set(CALLERID(number)=${CID}-${TRANSFERUSER}) )
exten => _[1-5]XX,n,ExecIf($[ "foo${TRANSFERUSER}" != "foo" ]?Set(CALLERID(name)=ORIGINAL:${CID} TRANSFER:${TRANSFERUSER}) )
exten => _[1-5]XX,n,Dial(SIP/${EXTEN},,tT)
Данные правила были мною добавлены в файл. Всё прекрасно заработало, но перестала срабатывать функция Follow Me. Подскажите, как решить данную проблему?
Вывод команды database show
/AMPUSER//intercom/override : reject
/AMPUSER/101/answermode : disabled
/AMPUSER/101/cfringtimer : 0
/AMPUSER/101/cidname : 101
/AMPUSER/101/cidnum : 101
/AMPUSER/101/concurrency_limit : 3
/AMPUSER/101/device : 101
/AMPUSER/101/dictate/email :
/AMPUSER/101/dictate/enabled : disabled
/AMPUSER/101/dictate/format : ogg
/AMPUSER/101/dictate/from : ZGljdGF0ZUBmcmVlcGJ4Lm9yZw==
/AMPUSER/101/followme/annmsg :
/AMPUSER/101/followme/changecid : default
/AMPUSER/101/followme/ddial : DIRECT
/AMPUSER/101/followme/dring :
/AMPUSER/101/followme/fixedcid :
/AMPUSER/101/followme/grpconf : DISABLED
/AMPUSER/101/followme/grplist : 101
/AMPUSER/101/followme/grppre :
/AMPUSER/101/followme/grptime : 20
/AMPUSER/101/followme/postdest : ext-local,101,dest
/AMPUSER/101/followme/prering : 7
/AMPUSER/101/followme/remotealertmsg :
/AMPUSER/101/followme/ringing : Ring
/AMPUSER/101/followme/strategy : ringallv2-prim
/AMPUSER/101/followme/toolatemsg :
/AMPUSER/101/hint : SIP/101&Custom:DND101,CustomPresence:101
/AMPUSER/101/intercom : enabled
/AMPUSER/101/intercom/override : reject
/AMPUSER/101/language :
/AMPUSER/101/noanswer :
/AMPUSER/101/outboundcid : 101
/AMPUSER/101/password :
/AMPUSER/101/queues/qnostate : usestate
/AMPUSER/101/recording :
/AMPUSER/101/recording/in/external : dontcare
/AMPUSER/101/recording/in/internal : dontcare
/AMPUSER/101/recording/ondemand : disabled
/AMPUSER/101/recording/out/external : dontcare
/AMPUSER/101/recording/out/internal : dontcare
/AMPUSER/101/recording/priority : 10
/AMPUSER/101/ringtimer : 0
/AMPUSER/101/voicemail :
/AMPUSER/102/answermode : disabled
/AMPUSER/102/cfringtimer : 0
/AMPUSER/102/cidname : 102
/AMPUSER/102/cidnum : 102
/AMPUSER/102/concurrency_limit : 3
/AMPUSER/102/device : 102
/AMPUSER/102/dictate/email :
/AMPUSER/102/dictate/enabled : disabled
/AMPUSER/102/dictate/format : ogg
/AMPUSER/102/dictate/from : ZGljdGF0ZUBmcmVlcGJ4Lm9yZw==
/AMPUSER/102/followme/changecid : default
/AMPUSER/102/followme/ddial : DIRECT
/AMPUSER/102/followme/fixedcid :
/AMPUSER/102/followme/grpconf : DISABLED
/AMPUSER/102/followme/grplist : 102
/AMPUSER/102/followme/grppre :
/AMPUSER/102/followme/grptime : 20
/AMPUSER/102/followme/prering : 7
/AMPUSER/102/hint : SIP/102&Custom:DND102,CustomPresence:102
/AMPUSER/102/intercom : enabled
/AMPUSER/102/intercom/override : reject
/AMPUSER/102/language :
/AMPUSER/102/noanswer :
/AMPUSER/102/outboundcid : 102
/AMPUSER/102/password :
/AMPUSER/102/queues/qnostate : usestate
/AMPUSER/102/recording :
/AMPUSER/102/recording/in/external : dontcare
/AMPUSER/102/recording/in/internal : dontcare
/AMPUSER/102/recording/ondemand : disabled
/AMPUSER/102/recording/out/external : dontcare
/AMPUSER/102/recording/out/internal : dontcare
/AMPUSER/102/recording/priority : 10
/AMPUSER/102/ringtimer : 0
/AMPUSER/102/voicemail :
/AMPUSER/103/answermode : disabled
/AMPUSER/103/cfringtimer : 0
/AMPUSER/103/cidname : 103
/AMPUSER/103/cidnum : 103
/AMPUSER/103/concurrency_limit : 3
/AMPUSER/103/device : 103
/AMPUSER/103/dictate/email :
/AMPUSER/103/dictate/enabled : disabled
/AMPUSER/103/dictate/format : ogg
/AMPUSER/103/dictate/from : ZGljdGF0ZUBmcmVlcGJ4Lm9yZw==
/AMPUSER/103/followme/changecid : default
/AMPUSER/103/followme/ddial : DIRECT
/AMPUSER/103/followme/fixedcid :
/AMPUSER/103/followme/grpconf : DISABLED
/AMPUSER/103/followme/grplist : 103-104
/AMPUSER/103/followme/grppre :
/AMPUSER/103/followme/grptime : 5
/AMPUSER/103/followme/prering : 7
/AMPUSER/103/hint : SIP/103&Custom:DND103,CustomPresence:103
/AMPUSER/103/intercom : enabled
/AMPUSER/103/intercom/override : reject
/AMPUSER/103/language :
/AMPUSER/103/noanswer :
/AMPUSER/103/outboundcid : 103
/AMPUSER/103/password :
/AMPUSER/103/queues/qnostate : usestate
/AMPUSER/103/recording :
/AMPUSER/103/recording/in/external : dontcare
/AMPUSER/103/recording/in/internal : dontcare
/AMPUSER/103/recording/ondemand : disabled
/AMPUSER/103/recording/out/external : dontcare
/AMPUSER/103/recording/out/internal : dontcare
/AMPUSER/103/recording/priority : 10
/AMPUSER/103/ringtimer : 0
/AMPUSER/103/voicemail :
/AMPUSER/104/answermode : disabled
/AMPUSER/104/cfringtimer : 0
/AMPUSER/104/cidname : 104
/AMPUSER/104/cidnum : 104
/AMPUSER/104/concurrency_limit : 3
/AMPUSER/104/device : 104
/AMPUSER/104/dictate/email :
/AMPUSER/104/dictate/enabled : disabled
/AMPUSER/104/dictate/format : ogg
/AMPUSER/104/dictate/from : ZGljdGF0ZUBmcmVlcGJ4Lm9yZw==
/AMPUSER/104/followme/changecid : default
/AMPUSER/104/followme/ddial : DIRECT
/AMPUSER/104/followme/fixedcid :
/AMPUSER/104/followme/grpconf : DISABLED
/AMPUSER/104/followme/grplist : 104
/AMPUSER/104/followme/grppre :
/AMPUSER/104/followme/grptime : 20
/AMPUSER/104/followme/prering : 7
/AMPUSER/104/hint : SIP/104&Custom:DND104,CustomPresence:104
/AMPUSER/104/intercom : enabled
/AMPUSER/104/intercom/override : reject
/AMPUSER/104/language :
/AMPUSER/104/noanswer :
/AMPUSER/104/outboundcid : 104
/AMPUSER/104/password :
/AMPUSER/104/queues/qnostate : usestate
/AMPUSER/104/recording :
/AMPUSER/104/recording/in/external : dontcare
/AMPUSER/104/recording/in/internal : dontcare
/AMPUSER/104/recording/ondemand : disabled
/AMPUSER/104/recording/out/external : dontcare
/AMPUSER/104/recording/out/internal : dontcare
/AMPUSER/104/recording/priority : 10
/AMPUSER/104/ringtimer : 0
/AMPUSER/104/voicemail :
/CALLTRACE/103 : 104
/CALLTRACE/104 : 103
/CW/101 : ENABLED
/CW/102 : ENABLED
/CW/103 : ENABLED
/CW/104 : ENABLED
/CustomDevstate/FOLLOWME101 : BUSY
/CustomDevstate/FOLLOWME102 : BUSY
/CustomDevstate/FOLLOWME103 : BUSY
/CustomDevstate/FOLLOWME104 : BUSY
/DEVICE/101/default_user : 101
/DEVICE/101/dial : SIP/101
/DEVICE/101/type : fixed
/DEVICE/101/user : 101
/DEVICE/102/default_user : 102
/DEVICE/102/dial : SIP/102
/DEVICE/102/type : fixed
/DEVICE/102/user : 102
/DEVICE/103/default_user : 103
/DEVICE/103/dial : SIP/103
/DEVICE/103/type : fixed
/DEVICE/103/user : 103
/DEVICE/104/default_user : 104
/DEVICE/104/dial : SIP/104
/DEVICE/104/type : fixed
/DEVICE/104/user : 104
/FAX/1/attachformat : pdf
/FAX/1/email :
/FAX/2/attachformat : pdf
/FAX/2/email :
/FAX/3/attachformat : pdf
/FAX/3/email :
/FAX/4/attachformat : pdf
/FAX/4/email :
/ZULU//AUTOANSWER : yes
/ZULU/101/AUTOANSWER : yes
/ZULU/101/TYPE :
/ZULU/101/URL :
/ZULU/102/AUTOANSWER : yes
/ZULU/102/TYPE :
/ZULU/102/URL :
/ZULU/103/AUTOANSWER : yes
/ZULU/103/TYPE :
/ZULU/103/URL :
/ZULU/104/AUTOANSWER : yes
/ZULU/104/TYPE :
/ZULU/104/URL :
195 results found.
Прошу прощение за портянку.
Followme выставляет какието переменные. Надо просто проверить, что переменная не пуста. Какие именно легко определеятеся посмотрев вывод по диалплану в момент звонка.
http://asterisk-support.ru/question/38386/kak-poniat-chto-proiskhodit-na-asteriske/
А вообще вы неправильно исходную пробелму решили. Надо было менять в macro-dialout-trunk-predial-hook
Задан: 2016-09-06 01:10:31 +0400
Просмотрен: 829 раз
Обновлен: Sep 07 '16
Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании
Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией
GNU GPL.
сделать проверку на followme и выключить ваши правила
meral ( 2016-09-06 02:38:00 +0400 )редактироватьБез правил всё работает, каким образом сделать проверку на follow me? Жизненно необходима подмена АОН при переводе звонка.
cooller51190 ( 2016-09-06 07:51:00 +0400 )редактироватьсам followme не использую, но имеет смысл сделать database show, посмотреть, а потом сообразить что и где проверять.
someuserman ( 2016-09-06 11:05:03 +0400 )редактироватьОК. Сначала посмотреть как работает follow me, для этого и нужен database show. Прицепиться к какому нибудь флагу, или сделать свой флаг. А потом этот флаг проверять. Мне видится такой алгоритм действий, но разбираться с fm по прежнему не хочется :)
someuserman ( 2016-09-06 17:40:19 +0400 )редактироватьО неправильности своего решения я уже понял. по логу увидел что он отрабатывает только этот маршрут и всё. В связи с чем прошу помощи в правильном решение проблемы. Так как вариантов подобного решения, нигде не смог найти
cooller51190 ( 2016-09-07 15:56:19 +0400 )редактироватьПравильное решение выставить rpid.
meral ( 2016-09-07 22:24:25 +0400 )редактироватьА если вы уж взялись переписывать трансфер, то гадьте только в from-internal-xfer и осторожно(с минимальным влияением на остальные функции).
meral ( 2016-09-07 22:26:53 +0400 )редактироватьTrust RPID - Yes Send RPID - Send Remote-Party-ID header Если вы об этих 2 значения. они у меня и так по дефолту стоят. Но увы данный способ позволяет получать аон только после поднятия трубки, а мне необходимо получать аон именно при звонке. Каким образом мне так его подменить? Примеров нигде не смог найти. что нашел, оказался некорректным способом, который подменяет весь маршрут.
cooller51190 ( 2016-09-08 11:03:30 +0400 )редактироватьтогда пишите ваши размышления о понимании диалплана в from-internal-xfer
meral ( 2016-09-12 02:22:29 +0400 )редактироватьНу я так понимаю что в данном контексте должны отрабатываться переводы звонков между номерами (такие как TRANSFERUSER и BLINDTRANSFER).
cooller51190 ( 2016-09-13 22:44:30 +0400 )редактироватьНу так для этого есть отдельная опция transfercontext и в freepbx оно from-internal-xfer
meral ( 2016-09-15 09:27:09 +0400 )редактироватьЕсли я добавляю свой код в контекст from-internal-xfer у меня также сбивается всё, и не отрабатываются FollowME
cooller51190 ( 2016-09-15 13:21:06 +0400 )редактироватьFollowme не использует контекст from-internal-xfer вообще. Вот эту строчку Dial(SIP/${EXTEN},,tT) замените на Goto(from-internal,${EXTEN},1). Это, конечно, добавит других проблем, но снимет вашу основную проблему. Вообще надо правильно хук писать а не 10+строчек в основной контекст(вы этим перекрывает оригинальный код)
meral ( 2016-09-15 19:32:45 +0400 )редактироватьПоправил слегка проблему. А как всёже правильно то было ?
cooller51190 ( 2016-09-16 10:42:11 +0400 )редактироватьправильно перед тем как писать чтото, сначала понять как работает то что есть. или использовать hooks. проблема програмирования, требует привлечения соответсвующих знаний. В одну строчку не решается, потому если вы надеетесь, что еще задаите 100500 вопросов и я вам выдам решение - нет, у меня не настолько много свободного времени.
meral ( 2016-09-16 23:39:19 +0400 )редактировать