Поставил vTiger 5.3.0 + Asterisk 1.8
захожу в каталог /vat/www/vtiger/cron/modules/PBXManager/
запускаю скрипт ./AsteriskClient.php
При попытке позвонить из vTiger выходит всплывающее окошко:
| Код: |
| Исходящий Звонок Pick up the extensions receiver to dial the number |
В консоли asterisk
| Код: |
| == Manager 'admin' logged on from 127.0.0.1 [Jan 25 19:02:14] NOTICE[2311]: channel.c:5275 __ast_request_and_dial: Unable to request channel SIP/101 == Manager 'admin' logged off from 127.0.0.1 |
В окне где запущен скрипт
| Код: |
| Event: OriginateResponse Privilege: call,all Response: Failure Channel: SIP/101 Context: test Exten: 84955555555 Reason: 0 Uniqueid: CallerIDNum: 101 CallerIDName: |
Что я не так сделал?
ПС
AsteriskClient.php - этот скрипт нужен только для входящих звонков, для исходящих он не обязателен.
| Код: |
| ats*CLI> sip show peers Name/username Host Dyn Forcerport ACL Port Status 101 (Unspecified) D 0 UNKNOWN 102 (Unspecified) D 0 UNKNOWN 103 (Unspecified) D 0 UNKNOWN 104 (Unspecified) D 0 UNKNOWN 105 (Unspecified) D 0 UNKNOWN 106 (Unspecified) D 0 UNKNOWN 107 (Unspecified) D 0 UNKNOWN 108 (Unspecified) D 0 UNKNOWN 109 (Unspecified) D 0 UNKNOWN 110 (Unspecified) D 0 UNKNOWN 10 sip peers [Monitored: 0 online, 10 offline Unmonitored: 0 online, 0 offline] |
Хотя я указал, в настройках пользователя:
| Код: |
| 6. Asterisk Configuration Asterisk Extension 101 Receive Incoming Calls да |
Вот я и говорю, где я что не учел?
Т.е. сначало звонок придёт на 101, а после поднятия трубки будет набираться тот исходящий на который ты нажал в vTiger.
можно Вас попросить выложить папку PBXManager?
а то у меня 5.2.1 и этой папки нету, а поиграться хочется)
Так и должно быть:
Завёл в X-lite 101 номер
Я из vTiger звоню, у меня в X-lite появляется принять ли звонок 101, я принимаю и соединение устанавливается.
Так и должно быть?
Теперь со входящими звонками такое происходить:
захожу в каталог /vat/www/vtiger/cron/modules/PBXManager/
запускаю скрипт ./AsteriskClient.php
Звоню.
В консоли Asterisk:
| Код: |
| == Manager 'admin' logged on from 127.0.0.1 -- Executing [s@gsm:1] Dial("Dongle/dongle0-0100000002", "SIP/101,,") in new stack == Using SIP RTP CoS mark 5 -- Called SIP/101 -- SIP/101-00000002 is ringing -- SIP/101-00000002 is ringing == Spawn extension (gsm, s, 1) exited non-zero on 'Dongle/dongle0-0100000002' |
В окне где запущен скрипт :
| Код: |
| Event: DongleStatus Privilege: call,all Device: dongle0 Status: Used Event: Newchannel Privilege: call,all Channel: Dongle/dongle0-0100000002 ChannelState: 4 ChannelStateDesc: Ring CallerIDNum: +799999999 CallerIDName: dongle0 AccountCode: Exten: Context: gsm Uniqueid: 1327612173.4 Event: Newchannel Privilege: call,all Channel: SIP/101-00000002 ChannelState: 0 ChannelStateDesc: Down CallerIDNum: CallerIDName: AccountCode: Exten: Context: test Uniqueid: 1327612173.5 Event: ChannelUpdate Privilege: system,all Channel: SIP/101-00000002 Uniqueid: 1327612173.5 Channeltype: SIP SIPcallid: 72da9b9758fe12523024a7a37d5b6a66@81.55.207.6:5060 SIPfullcontact: sip:101@95.27.201.157:39560;rinstance=d40597b735befaaa Event: ChannelUpdate Privilege: system,all Channel: SIP/101-00000002 Channeltype: SIP SIPcallid: 72da9b9758fe12523024a7a37d5b6a66@81.55.207.6:5060 SIPfullcontact: sip:101@95.27.201.157:39560;rinstance=d40597b735befaaa Peername: 101 Event: NewCallerid Privilege: call,all Channel: SIP/101-00000002 CallerIDNum: s CallerIDName: Uniqueid: 1327612173.5 CID-CallingPres: 0 (Presentation Allowed, Not Screened) Event: QueueMemberStatus Privilege: agent,all Queue: test Location: SIP/101 MemberName: SIP/101 Membership: static Penalty: 0 CallsTaken: 0 LastCall: 0 Status: 6 Paused: 0 Event: Dial Privilege: call,all SubEvent: Begin Channel: Dongle/dongle0-0100000002 Destination: SIP/101-00000002 CallerIDNum: +799999999 CallerIDName: dongle0 ConnectedLineNum: ConnectedLineName: UniqueID: 1327612173.4 DestUniqueID: 1327612173.5 Dialstring: 101 Event: Newstate Privilege: call,all Channel: SIP/101-00000002 ChannelState: 5 ChannelStateDesc: Ringing CallerIDNum: s CallerIDName: ConnectedLineNum: +799999999 ConnectedLineName: dongle0 Uniqueid: 1327612173.5 Event: QueueMemberStatus Privilege: agent,all Queue: test Location: SIP/101 MemberName: SIP/101 Membership: static Penalty: 0 CallsTaken: 0 LastCall: 0 Status: 6 Paused: 0 Event: DongleStatus Privilege: call,all Device: dongle0 Status: Free Event: DongleCallStateChange Privilege: call,all Device: dongle0 CallIdx: 1 NewState: released Event: Hangup Privilege: call,all Channel: SIP/101-00000002 Uniqueid: 1327612173.5 CallerIDNum: s CallerIDName: ConnectedLineNum: +799999999 ConnectedLineName: dongle0 Cause: 16 Cause-txt: Normal Clearing Event: QueueMemberStatus Privilege: agent,all Queue: test Location: SIP/101 MemberName: SIP/101 Membership: static Penalty: 0 CallsTaken: 0 LastCall: 0 Status: 1 Paused: 0 Event: Dial Privilege: call,all SubEvent: End Channel: Dongle/dongle0-0100000002 UniqueID: 1327612173.4 DialStatus: CANCEL Event: QueueMemberStatus Privilege: agent,all Queue: test Location: SIP/101 MemberName: SIP/101 Membership: static Penalty: 0 CallsTaken: 0 LastCall: 0 Status: 1 Paused: 0 Event: Newstate Privilege: call,all Channel: Dongle/dongle0-0100000002 ChannelState: 0 ChannelStateDesc: Down CallerIDNum: +799999999 CallerIDName: dongle0 ConnectedLineNum: ConnectedLineName: Uniqueid: 1327612173.4 Event: Hangup Privilege: call,all Channel: Dongle/dongle0-0100000002 Uniqueid: 1327612173.4 CallerIDNum: +799999999 CallerIDName: dongle0 ConnectedLineNum: ConnectedLineName: Cause: 16 Cause-txt: Normal Clearing Event: DongleCEND Privilege: call,all Device: dongle0 CallIdx: 1 Duration: 0 EndStatus: 104 CCCause: 16 |
Но всплывающего окна в vTiger нету.
Как-то допиливать что ли надо это?
Added after 1 minutes:
logdog
Напишите в личку свой E-mail скину.
Или Вам прямо сюда?
А по поводу входящих и всплывающих окощечек тут веселее. Скрипт изначально заточен под freePBX и тригер у него настроен на пару переменных которые в freePBX ставятся при звонке.
У тебя астер 1.8 голый или это Еластикс какой-нибудь или ещё что-нибудь ?
Но суть в том что нужно понять как работает этот скрипт и тогда можно спокойно туда внести изменения для своих нужд.
Вот тебе пару ссылок которые мне очень помогли разобраться:
http://forums.vtiger.com/viewtopic.php?f ... hp#p158174
http://crm.abc7.eu/articles/3-general-ap ... op-up.html
у меня сборка elastix
Вопрос: информация о клиенте (всплывающее окно), должно появляться до соединения с клиентом или после фактического поднятия трубки?У меня просто появляется, когда снимаю трубку)
2denis000
Вот тут ..../vtigercrm/modules/PBXManager/utils/AsteriskClass.php
нужно проверить секцию и исправить если нужно
| Код: |
| switch($typeCalled){ case "SIP": $context = "from-internal"; break; case "PSTN": $context = "from-internal";//"outbound-dialing"; break; default: $context = "from-internal"; } $this->createCall($from, $to, $context); } |
Да, посмотрел Ваш файл, там неправильно:
| Код: |
| switch($typeCalled){ case "SIP": $context = "operators"; break; case "PSTN": $context = "operators"; break; default: $context = "operators"; |
Последний раз редактировалось: logdog (Пт Янв 27, 2012 13:00)
Самому это интересно поиграться с этим всем.
Переделал скрипт AsteriskClient.php
Но всё равно входящие в совтфон идут, а во vTiger нет всплывающего окошечка
operators - это мой контент из которого я звоню. всё правильно там
я делал как тут http://crm.abc7.eu/articles/2-vtiger-crm ... oblem.html
но несмотря, что у меня * 1.8, ставил 1.6
Я начинал тоже с этой инструкции.
И Вы полностью заменили файл текст файла AsteriskClient.php на текст который написан в 5 пункте этой инструкции?
может Вам и вправду поставить FreePBX 2.8.
Здесь почитайте, может найдёте что интересное http://www.elastix.org/index.php/en/comp ... popup.html
Как-то же можно заставить работать его на голом Asterisk.
Пробовал и это:
http://forums.vtiger.com/viewtopic.php?f ... hp#p158174
И это
http://crm.abc7.eu/articles/3-general-ap ... op-up.html
И это
http://crm.abc7.eu/articles/2-vtiger-crm ... oblem.html
Не появляется всплывающее окошко при входящем звонке
Скрипт AsteriskClient.php по большей части заточен на работу с freePBX, кто то говорит что даже начиная с версии 2.8. Но у меня своя конфигурация Астериска и я хочу что бы входящие вызовы на моих абонентов так же обрабатывались vTiger'ом. Советую сделать копию этого скрипта в той же папке и работать с ней - имя этого файла на работу системы как выяснилось не влияет.
Что я сделал что бы всплывающие окна заработали с нашей АТСкой ?
И так, вся оснавная обработка приходящих Event'ов от AMI Asterisk'а происходит в функциях: asterisk_handleResponse1, asterisk_handleResponse2, asterisk_handleResponse3.
Мне пришлось изменить только одну вторую (asterisk_handleResponse2), хотя в начале я покушался и на первую. Опишу что я сделал и почему:
Функция asterisk_handleResponse1 отлавливает Event'ы с состоянием Ring или Ringing и заносит в базу информацию о звонящем. В ней в итоге ничего менять так и не пришлось.
Функция asterisk_handleResponse2 - здесь и происходит поиск того на какой номер пришёл вызов, который мы описали в функции 1. В стандартном варианте строчка поиска Event'ов выглядит так:
| Код: |
| if( $mainresponse['Event'] == 'Newexten' && (strstr($appdata, "__DIALED_NUMBER") || strstr($appdata, "EXTTOCALL")) ) { ... } |
Что означает, что выбираются события типа Newexten, где в ApplicationData присуствует переменная __DIALED_NUMBER или EXTTOCALL. Эти переменные выставляются в определённых частях диалплана Астериска FreePBX'ом.
У меня таких нету, но есть другие (пришлось даже немного доработать диалплан Астериска) и мой вариант выглядит так:
| Код: |
| if( ($mainresponse['Event'] == 'Newexten' && (strstr($appdata, "ExtenCall"))) || ($mainresponse['Event'] == 'VarSet' && (strstr($variable, "MEMBERNAME"))) ) { ... } |
У меня в каких-то случаях ставится переменная ExtenCall, в которой хранится екстеншен на который позвонили или ставится переменная MEMBERNAME - она выставляется очередями.
Т.к. во втором случае используется другой тип Event'а, то я переписал одну часть:
| Код: |
| $splits = explode('=', $appdata); $extension = $splits[1]; |
на следующее:
| Код: |
| if (!empty($appdata)) { $splits = explode('=', $appdata); $extension = $splits[1]; //echo "DEBUG appdata: extensions=$extension"; }else { $extension = $mainresponse['Value']; //echo "DEBUG Queue: extension=$extension"; } |
Вот вроде бы и всё, даже как то мало получилось, но пока я до них дошёл прошёл длинный путь!=)
Заметка: мне очень помогал скрипт на перле, который коннектится к Астериску по AMI и вываливает мне все сообщения на экран, а потом в рукопашную сидел и выбирал что мне подойдёт.
Надеюсь это облегчит путь осваивания этой CRM-системы, а я не забуду как я это сделал.)
Возможно я что-то и упустил, если что не понятно спрашивайте - если смогу то отвечу.
Информация о клиенте (всплывающее окно), появляется после фактического поднятия трубки, а как сделать, чтоб окно было видно вовремя звонка?
Т.е. что бы окошечко всё же вылетало во время звонка - нужно что бы сработала вторая функция, посмотри условия её и поднастрой либо астериск либо эту функцию.
Я оставил так.
И еще: при исходящем звонке, скрипт не передает параметр accountcode. Просто тарификация звонка у меня идет через биллинг, и он не пропускает звонок без аккаунт кода.
Ставлю сейчас на Asterisk 1.6.2.20 vtiger 5.4.RC
Всё как выше делал:
Но у меня почему-то не появляються ни какие Эвенты кроме sipnet
| Код: |
| Connecting to asterisk server @ 2012-04-17 17:34:38 Connected successfully Trying to login to asterisk Logged in successfully to asterisk server Event: Registry Privilege: system,all ChannelType: SIP Domain: sipnet.ru Status: Registered |
и звонки исходящие не идут
| Код: |
| Pick up the extensions receiver to dial the number |
В консоли астера:
| Код: |
| == Manager 'vtiger' logged on from 127.0.0.1 == Manager 'vtiger' logged off from 127.0.0.1 |
Номер у меня в X-Lite зарегистрирован
| Код: |
| 1001/1001 192.168.254.2 D 40342 OK (103 ms) |
И в настройках пользователя во vtiger указанно:
| Код: |
| 7. Asterisk Configuration Asterisk Extension 1001 Receive Incoming Calls да |
Что-то изменилось? или как?