Виталий
20.05.2018
09:16:34
столкнулся с проблемой - хочу попросить у сообщества помощи
проблема:
пользователь регистрируется нормально, но при исходящем вызове он идет в контексте public
настройки пользователя что отдаются
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="freeswitch/xml">
<section name="directory">
<domain name="u001.sip.autapp.com">
<params>
<param name="dial-string" value="{presence_id=${dialed_user}@${dialed_domain}}${sofia_contact(${dialed_user}@${dialed_domain})}"/>
</params>
<groups>
<group name="default">
<users>
<user id="1000">
<params>
<param name="password" value="1234"/>
<param name="vm-password" value="1234"/>
</params>
<variables>
<param name="accountcode" value="1000"/>
<param name="user_context" value="u001.sip.autapp.com"/>
<param name="effective_caller_id_name" value="Extension 1000"/>
<param name="effective_caller_id_number" value="1000"/>
</variables>
</user>
</users>
</group>
</groups>
</domain>
</section>
</document>
настройки acl.conf
Google
Виталий
20.05.2018
09:19:04
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="freeswitch/xml">
<section name="configuration">
<configuration name="acl.conf" description="Network Lists">
<network-lists>
<lan default="allow">
<node type="deny" cidr="192.168.42.0/24"/>
<node type="allow" cidr="192.168.42.42/32"/>
</lan>
<domains default="deny">
<node type="allow" domain="u004.sip.autapp.com"/>
<node type="allow" domain="u003.sip.autapp.com"/>
<node type="allow" domain="u002.sip.autapp.com"/>
<node type="allow" domain="u001.sip.autapp.com"/>
</domains>
</network-lists>
</configuration>
</section>
</document>
лог консоли при звонке
2018-05-20 12:19:40.316745 [DEBUG] switch_core_state_machine.c:584 (sofia/internal/1000@u001.sip.autapp.com) Running State Change CS_NEW (Cur 1 Tot 519)
2018-05-20 12:19:40.316745 [DEBUG] sofia.c:9873 sofia/internal/1000@u001.sip.autapp.com receiving invite from 92.243.182.101:29425 version: 1.6.20 64bit
2018-05-20 12:19:40.316745 [DEBUG] sofia.c:10044 IP 92.243.182.101 Rejected by acl "domains". Falling back to Digest auth.
2018-05-20 12:19:40.316745 [WARNING] sofia_reg.c:1792 SIP auth challenge (INVITE) on sofia profile 'internal' for [5000@u001.sip.autapp.com] from ip 92.243.182.101
2018-05-20 12:19:40.316745 [DEBUG] switch_core_state_machine.c:603 (sofia/internal/1000@u001.sip.autapp.com) State NEW
2018-05-20 12:19:40.316745 [DEBUG] sofia.c:2334 detaching session cce8fd66-a2ef-48be-8ed0-88367d3a7d7b
2018-05-20 12:19:40.356786 [DEBUG] sofia.c:2442 Re-attaching to session cce8fd66-a2ef-48be-8ed0-88367d3a7d7b
2018-05-20 12:19:40.376746 [DEBUG] sofia.c:9873 sofia/internal/1000@u001.sip.autapp.com receiving invite from 92.243.182.101:29425 version: 1.6.20 64bit
2018-05-20 12:19:40.376746 [DEBUG] sofia.c:10044 IP 92.243.182.101 Rejected by acl "domains". Falling back to Digest auth.
2018-05-20 12:19:40.556747 [CONSOLE] mod_xml_curl.c:323 XML response is in /tmp/d55f6352-09f9-43cd-95a4-a69f5d9228b2.tmp.xml
2018-05-20 12:19:40.556747 [DEBUG] sofia.c:11168 Setting NAT mode based on nat.auto
2018-05-20 12:19:40.556747 [DEBUG] sofia.c:7084 Channel sofia/internal/1000@u001.sip.autapp.com entering state [received][100]
2018-05-20 12:19:40.556747 [DEBUG] sofia.c:7094 Remote SDP:
—cut—
2018-05-20 12:19:40.556747 [DEBUG] sofia.c:7486 (sofia/internal/1000@u001.sip.autapp.com) State Change CS_NEW -> CS_INIT
2018-05-20 12:19:40.556747 [DEBUG] switch_core_state_machine.c:584 (sofia/internal/1000@u001.sip.autapp.com) Running State Change CS_INIT (Cur 1 Tot 519)
2018-05-20 12:19:40.556747 [DEBUG] switch_core_state_machine.c:627 (sofia/internal/1000@u001.sip.autapp.com) State INIT
2018-05-20 12:19:40.556747 [DEBUG] mod_sofia.c:90 sofia/internal/1000@u001.sip.autapp.com SOFIA INIT
2018-05-20 12:19:40.556747 [DEBUG] switch_core_state_machine.c:40 sofia/internal/1000@u001.sip.autapp.com Standard INIT
2018-05-20 12:19:40.556747 [DEBUG] switch_core_state_machine.c:48 (sofia/internal/1000@u001.sip.autapp.com) State Change CS_INIT -> CS_ROUTING
2018-05-20 12:19:40.556747 [DEBUG] switch_core_state_machine.c:627 (sofia/internal/1000@u001.sip.autapp.com) State INIT going to sleep
2018-05-20 12:19:40.556747 [DEBUG] switch_core_state_machine.c:584 (sofia/internal/1000@u001.sip.autapp.com) Running State Change CS_ROUTING (Cur 1 Tot 519)
2018-05-20 12:19:40.556747 [DEBUG] switch_channel.c:2249 (sofia/internal/1000@u001.sip.autapp.com) Callstate Change DOWN -> RINGING
2018-05-20 12:19:40.556747 [DEBUG] switch_core_state_machine.c:643 (sofia/internal/1000@u001.sip.autapp.com) State ROUTING
2018-05-20 12:19:40.556747 [DEBUG] mod_sofia.c:143 sofia/internal/1000@u001.sip.autapp.com SOFIA ROUTING
2018-05-20 12:19:40.556747 [DEBUG] switch_core_state_machine.c:236 sofia/internal/1000@u001.sip.autapp.com Standard ROUTING
2018-05-20 12:19:40.556747 [INFO] mod_dialplan_xml.c:637 Processing 1000 <1000>->5000 in context public
может быть кто тыкнет пальцем в мою ошибку (в ДНК?) ?
в благодарность обязуюсь отдавать код всем нуждающимся ) (рисую его на yii2 - переделать под свои нужды не составит труда)
Сергей
20.05.2018
09:28:20
Могу ошибаться, но если абон промачится в acl, то авторизации как таковой не будет и звонок пройдет по дефолтовому контексту, указанному в профайле
В каком параметре прописан acl domains в профайле?
Виталий
20.05.2018
09:29:31
мин
Сергей
20.05.2018
09:30:24
И что будет если исключить из работы acl domains?
Виталий
20.05.2018
09:34:04
если исключить - остается все так же
ложится в public
Alexey
20.05.2018
10:23:09
а контекст этот точно существует? вы его как отдаете, статикой или xml curl?
ros
20.05.2018
10:24:52
пользователь 1000 есть в других доменах?
и конфиг internal покажите
Александр
20.05.2018
10:34:04
admin admin не подходит)
Google
Виталий
20.05.2018
11:03:28
софия.мод - через xml_curl
# cat /tmp/3a575c8a-66bf-45eb-a300-3fc167919779.tmp.xml
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="freeswitch/xml">
<section name="configuration">
<configuration name="sofia.conf" description="sofia Endpoint">
<global_settings>
<param name="log-level" description="0"/>
<param name="debug-presence" description="0"/>
</global_settings>
<profiles>
<profile name="external">
<gateways/>
<aliases/>
<domains>
<domain name="all" alias="false" parse="true"/>
</domains>
<settings>
<param name="debug" value="0"/>
<param name="sip-trace" value="no"/>
<param name="sip-capture" value="no"/>
<param name="rfc2833-pt" value="101"/>
<param name="sip-port" value="5080"/>
<param name="dialplan" value="XML"/>
<param name="context" value="public"/>
<param name="dtmf-duration" value="2000"/>
<param name="inbound-codec-prefs" value="OPUS,G722,PCMU,PCMA,VP8"/>
<param name="outbound-codec-prefs" value="OPUS,G722,PCMU,PCMA,VP8"/>
<param name="hold-music" value="local_stream://moh"/>
<param name="rtp-timer-name" value="soft"/>
<param name="local-network-acl" value="localnet.auto"/>
<param name="manage-presence" value="false"/>
<param name="inbound-codec-negotiation" value="generous"/>
<param name="nonce-ttl" value="60"/>
<param name="auth-calls" value="false"/>
<param name="inbound-late-negotiation" value="true"/>
<param name="inbound-zrtp-passthru" value="true"/>
<param name="rtp-ip" value="46.61.140.20"/>
<param name="sip-ip" value="46.61.140.20"/>
<param name="ext-rtp-ip" value="auto-nat"/>
<param name="ext-sip-ip" value="auto-nat"/>
<param name="rtp-timeout-sec" value="300"/>
<param name="rtp-hold-timeout-sec" value="1800"/>
<param name="tls" value="false"/>
<param name="tls-only" value="false"/>
<param name="tls-bind-params" value="transport=tls"/>
<param name="tls-sip-port" value="5081"/>
<param name="tls-passphrase" value=""/>
<param name="tls-verify-date" value="true"/>
<param name="tls-verify-policy" value="none"/>
<param name="tls-verify-depth" value="2"/>
<param name="tls-verify-in-subjects" value=""/>
<param name="tls-version" value="tlsv1,tlsv1.1,tlsv1.2"/>
</settings>
</profile>
<profile name="internal">
<gateways/>
<aliases/>
<domains>
<domain name="u004.sip.autapp.com" alias="false" parse="false"/>
<domain name="u003.sip.autapp.com" alias="false" parse="false"/>
<domain name="u002.sip.autapp.com" alias="false" parse="false"/>
<domain name="u001.sip.autapp.com" alias="false" parse="false"/>
</domains>
<settings>
<param name="user-agent-string" value="CiscoAsteriskSrv"/>
<param name="debug" value="0"/>
<param name="sip-trace" value="no"/>
<param name="sip-capture" value="no"/>
<param name="watchdog-enabled" value="no"/>
<param name="watchdog-step-timeout" value="30000"/>
<param name="watchdog-event-timeout" value="30000"/>
<param name="log-auth-failures" value="true"/>
<param name="forward-unsolicited-mwi-notify" value="false"/>
<param name="context" value="public"/>
<param name="rfc2833-pt" value="101"/>
<param name="sip-port" value="5060"/>
<param name="dialplan" value="XML"/>
<param name="dtmf-duration" value="2000"/>
<param name="inbound-codec-prefs" value="OPUS,G722,PCMU,PCMA,VP8"/>
<param name="outbound-codec-prefs" value="OPUS,G722,PCMU,PCMA,VP8"/>
<param name="rtp-timer-name" value="soft"/>
<param name="rtp-ip" value="46.61.140.20"/>
<param name="sip-ip" value="46.61.140.20"/>
<param name="hold-music" value="local_stream://moh"/>
<param name="apply-nat-acl" value="nat.auto"/>
<param name="apply-inbound-acl" value="domains"/>
<param name="local-network-acl" value="localnet.auto"/>
<param name="record-path" value="/var/lib/freeswitch/recordings"/>
<param name="record-template" value="${domain}.${caller_id_number}.${target_domain}.${strftime(%Y-%m-%d-%H-%M-%S)}.wav"/>
<param name="manage-presence" value="true"/>
<param name="presence-hosts" value="46.61.140.20,46.61.140.20"/>
<param name="presence-privacy" value="false"/>
<param name="inbound-codec-negotiation" value="generous"/>
<param name="tls" value="false"/>
<param name="tls-only" value="false"/>
<param name="tls-bind-params" value="transport=tls"/>
<param name="tls-sip-port" value="5061"/>
<param name="tls-passphrase" value=""/>
<param name="tls-verify-date" value="true"/>
<param name="tls-verify-policy" value="none"/>
<param name="tls-verify-depth" value="2"/>
<param name="tls-verify-in-subjects" value=""/>
<param name="tls-version" value="tlsv1,tlsv1.1,tlsv1.2"/>
<param name="tls-ciphers" value="ALL:!ADH:!LOW:!EXP:!MD5:@STRENGTH"/>
<param name="inbound-late-negotiation" value="true"/>
<param name="inbound-zrtp-passthru" value="true"/>
<param name="nonce-ttl" value="60"/>
<param name="auth-calls" value="true"/>
<param name="inbound-reg-force-matching-username" value="true"/>
<param name="auth-all-packets" value="false"/>
<param name="ext-rtp-ip" value="auto-nat"/>
<param name="ext-sip-ip" value="auto-nat"/>
<param name="rtp-timeout-sec" value="300"/>
<param name="rtp-hold-timeout-sec" value="1800"/>
<param name="ws-binding" value=":5066"/>
<param name="wss-binding" value=":7443"/>
<param name="challenge-realm" value="auto_from"/>
</settings>
</profile>
</profiles>
</configuration>
</section>
</document>
диалплан - контекст статикой (еще не дошли руки)
<?xml version="1.0" encoding="utf-8"?>
<include>
<context name="u001.sip.autapp.com">
<extension name="unloop">
<condition field="${unroll_loops}" expression="^true$"/>
<condition field="${sip_looped_call}" expression="^true$">
<action application="deflect" data="${destination_number}"/>
</condition>
</extension>
<extension name="redial">
<condition field="destination_number" expression="^(redial|870)$">
<action application="transfer" data="${hash(select/${domain_name}-last_dial/${caller_id_number})}"/>
</condition>
</extension>
<extension name="call_return">
<condition field="destination_number" expression="^\*69$|^869$|^lcr$">
<action application="transfer" data="${hash(select/${domain_name}-call_return/${caller_id_number})}"/>
</condition>
</extension>
<!--cut-->
<X-PRE-PROCESS cmd="include" data="default/*.xml"/>
</context>
</include>
если все это прописывать в файлах - работает. при переходе на xml_curl перестает уходить в нужный контекст
пользователь 1000 есть во всех 4 доменах )
ros
20.05.2018
11:12:21
включить дебаг xml_curl и посмотреть что оно получает от бекенда
если в статике все работает, значит что-то не то в ответе
Виталий
20.05.2018
11:14:36
дебаг и смотрю - вроде как все нормально получает (
выше я как раз и бросал то что он получает по запросу
все - кроме диалплана
Александр
20.05.2018
11:25:36
Виталий
20.05.2018
11:25:51
нет к сожалению(
и в куда ковырять - мыслей нет )
Александр
20.05.2018
11:26:35
user_context это переменная а не параметр)
Виталий
20.05.2018
11:27:44
<user id="1000">
<params>
<param name="password" value="1234"/>
<param name="vm-password" value="1234"/>
</params>
<variables>
<param name="accountcode" value="1000"/>
<param name="user_context" value="u001.sip.autapp.com"/>
<param name="effective_caller_id_name" value="Extension 1000"/>
<param name="effective_caller_id_number" value="1000"/>
</variables>
</user>
Александр
20.05.2018
11:28:07
неправильно
Виталий
20.05.2018
11:28:50
блинааааа
реально тупая ошибка (
Google
Виталий
20.05.2018
11:29:06
копипастил и не заменил
$xmlw->startElement('variables');
foreach ($model->directoryUserVariables as $key => $variable) {
$xmlw->startElement('variable');
$xmlw->writeAttribute('name', $variable->name);
$xmlw->writeAttribute('value', $variable->value);
$xmlw->endElement(); //variable
}
$xmlw->endElement(); //variables
СПАСИБО!!! - сейчас проверю )
# cat /tmp/e5f6b688-f55f-41df-888a-e164f0b55a98.tmp.xml
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="freeswitch/xml">
<section name="directory">
<domain name="u001.sip.autapp.com">
<params>
<param name="dial-string" value="{presence_id=${dialed_user}@${dialed_domain}}${sofia_contact(${dialed_user}@${dialed_domain})}"/>
</params>
<groups>
<group name="default">
<users>
<user id="1000">
<params>
<param name="password" value="181276q"/>
<param name="vm-password" value="1234"/>
</params>
<variables>
<variable name="accountcode" value="1000"/>
<variable name="user_context" value="u001.sip.autapp.com"/>
<variable name="effective_caller_id_name" value="Extension 1000"/>
<variable name="effective_caller_id_number" value="1000"/>
</variables>
</user>
</users>
</group>
</groups>
</domain>
</section>
</document>
и все стало отлично!!!
2018-05-20 14:34:37.516746 [INFO] mod_dialplan_xml.c:637 Processing 1000 <1000>->9195 in context u001.sip.autapp.com
ну теперь диалплан осталось допилить )
енот
20.05.2018
11:42:30
поздравляю!
Archmagister
20.05.2018
16:50:12
Всем привет. Есть задача по настройке аккаунтного входа для операторов колл-центра. АТС - фс плюс нашлепка fusion pbx. Если есть заинтересовавшиеся, то просьба в лс. Обсудим цену и задание подробнее.
Виталий
20.05.2018
16:50:59
ну хоть задание поподробнее немного )
ато вход и так есть для операторов во фьюжене
енот
20.05.2018
16:51:29
я всё мечтаю что люди будут начинать свои подобные речи со слов "у меня есть ТЗ, ознакомьтесь"
Виталий
20.05.2018
16:52:01
это бы резко снимало все вопросы и отсекало лишнюю болтовню!!!
енот
20.05.2018
16:52:10
да хрен с ними, с людьми. я мечтаю о ТЗ на работе.
Виталий
20.05.2018
16:52:25
мож тогда тебе к нам переманить)?
а что - ТЗ у нас есть... правда оно не далее чем на неделю )
енот
20.05.2018
16:58:00
AGILE??
Виталий
20.05.2018
16:58:29
не - не спинты ... просто выливки так организованы проектов
енот
20.05.2018
16:58:36
ну агил
не важно считаете ли вы его агилом))
а переманивать... вряд ли твои согласятся на мои требования по зп ;)
Виталий
20.05.2018
16:59:36
главное чтоб ты согласился на требования по знаниям )
Google
енот
20.05.2018
17:00:17
со знаниями всё плохо. ты же в курсе.
Виталий
20.05.2018
17:00:18
ато приходят "партизаны" и им дают тестовое задание где написано - как найти в массиве два наибольших числа... стоят и мычат )
енот
20.05.2018
17:00:36
какие-то у вас странные тестовые
всем же понятно - вывести на экран и пальцем ткнуть
Виталий
20.05.2018
17:00:50
так начинают то с минимума
енот
20.05.2018
17:01:09
не, ну если к вам настолько идиоты ходят, то да, отсеивать стоит.
Виталий
20.05.2018
17:01:09
надо автоматизировать - ато вдруг лапками не туда ткнешь )
кстати - покажи класс - раскажи алгоритм полный - как это себе мыслишь )
енот
20.05.2018
17:03:13
хм
я попробую щас в консоли накидать, мне так проще
Виталий
20.05.2018
17:05:26
да ты общую концепцию - не решение даже )
их не просят написать даже - просто проверяют умение думать без гугла )
просят расписать другое задание - школьное
по стенке к потолку и обратно бегут 2 таракана
один бежит с постоянной скоростью второй вверх бежит в 2 раза медленее вниз в 2 раза быстрее от скорости первого.
кто преодолеет полное растояние быстрее)?
Anton
20.05.2018
17:08:44
и что говорят ? .)
даже интересно
Виталий
20.05.2018
17:08:55
говорят что прибегут одновременно
енот
20.05.2018
17:09:29
можно в одну итерацию, я уверен, но у меня первый час ночи
Виталий
20.05.2018
17:10:02
енот
20.05.2018
17:10:14
Google
енот
20.05.2018
17:10:30
знаю
Виталий
20.05.2018
17:10:31
ты даже не проверил содержит ли массив эти 2 элемента )
енот
20.05.2018
17:10:34
если будет два
да
а
вообще не было этого в условии
а ошибка у меня в том что если будут два идентичных максимальных, я не найду
вот где косяк
Виталий
20.05.2018
17:11:04
как небыло - тебя попросили найти - но граничных условий никто не задал
енот
20.05.2018
17:11:31
надо не выеживаться было и просто грохнуть найденный элемент из массива, вот. или запоминать индекс.
да, с индексом лучше было бы
S
20.05.2018
17:11:41
Виталий
20.05.2018
17:11:47
я - как ленивый админ сделал еще проще - почти в каждом языке есть функция сортировки массива - я отсортировал и взял первых 2 элемента )
енот
20.05.2018
17:11:54
епт
блин
блин!
Виталий
20.05.2018
17:12:26
епт
тоже самое сказал и продюсер что проводил собеседование и решил на мне откатать свои задачки )