AF
Asterisk Forum
обсуждения телефонии, VoIP и IP-PBX
12разделов
5 423тем
34 385сообщений
← К списку тем

vTiger не хочет совершать звонки

Asterisk GUI 23 сообщений -
#1

Здравствуйте!
Поставил 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:


Что я не так сделал?
#2

А есть ли у тебя этот канал SIP/101 ? Покажи вывод sip show peers.

ПС
AsteriskClient.php - этот скрипт нужен только для входящих звонков, для исходящих он не обязателен.
#3

Вот
Код:

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]
#4

а при звонке он в статусе онлайн?
#5

В этом-то и дело что нет.
Хотя я указал, в настройках пользователя:
Код:

6. Asterisk Configuration
Asterisk Extension 101 Receive Incoming Calls да

Вот я и говорю, где я что не учел?
#6

Ты сделай что бы 101 был онлайн обязательно те какойто телефон зарегестрированный под этим номером и доступный для звонка на него, он же когда звонок создаёт на прямую в канал обращается, а не на екстеншен.

Т.е. сначало звонок придёт на 101, а после поднятия трубки будет набираться тот исходящий на который ты нажал в vTiger.
#7

2denis000

можно Вас попросить выложить папку PBXManager?

а то у меня 5.2.1 и этой папки нету, а поиграться хочется)
#8

Всё отлично исходящая связь заработала.
Так и должно быть:
Завёл в 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 скину.
Или Вам прямо сюда?
#9

С исходящими всё верно.
А по поводу входящих и всплывающих окощечек тут веселее. Скрипт изначально заточен под freePBX и тригер у него настроен на пару переменных которые в freePBX ставятся при звонке.
У тебя астер 1.8 голый или это Еластикс какой-нибудь или ещё что-нибудь ?
#10

Голый Asterisk
#11

Тогда нужно поправить скрипт этот волшебный. Я лично немного переделал его под свою АТС, она тоже на голом астере базируется со своей структурой отличительной от freePBX.
Но суть в том что нужно понять как работает этот скрипт и тогда можно спокойно туда внести изменения для своих нужд.

Вот тебе пару ссылок которые мне очень помогли разобраться:
http://forums.vtiger.com/viewtopic.php?f ... hp#p158174
http://crm.abc7.eu/articles/3-general-ap ... op-up.html
#12

А на Ваш скрипт нельзя взглянуть?
#13

Спасибо, сделал.
у меня сборка 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)
#14

Если б я знал!
Самому это интересно поиграться с этим всем.

Переделал скрипт AsteriskClient.php
Но всё равно входящие в совтфон идут, а во vTiger нет всплывающего окошечка Sad
operators - это мой контент из которого я звоню. всё правильно там
#16

И после поднятия тоже нету окна.
Я начинал тоже с этой инструкции.
И Вы полностью заменили файл текст файла AsteriskClient.php на текст который написан в 5 пункте этой инструкции?
#18

Не хотелось бы ставить FreePBX
Как-то же можно заставить работать его на голом 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
Не появляется всплывающее окошко при входящем звонке Sad
#19

==vTigerCRM== Asterisk 1.8.8.1 + vTigerCRM 5.3.0
Скрипт 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-системы, а я не забуду как я это сделал.)

Возможно я что-то и упустил, если что не понятно спрашивайте - если смогу то отвечу.
#20

2Homer

Информация о клиенте (всплывающее окно), появляется после фактического поднятия трубки, а как сделать, чтоб окно было видно вовремя звонка?
#21

На сколько я понял окошечко вылетает как только верно отрабатывает вторая функция и кладёт в БД нужную запись. При прямом звонке (не из очереди) на телефон обычно окошечко вылетает ещё во время звонка, а при звонке с очереди уже после поднятия, возможно и можно придумать как сделать что бы окошечко вылетало во время звонка из очереди - но что будет если звонят все телефоны сразу!

Т.е. что бы окошечко всё же вылетало во время звонка - нужно что бы сработала вторая функция, посмотри условия её и поднастрой либо астериск либо эту функцию.

Я оставил так.
#22

А никто не знает, как сделать так, чтобы при входящем звонке отображался не CallerID, а номер на который пришел звонок? Где в скриптах это дело подправить? Может кто знает и готов за плюшку сделать.
И еще: при исходящем звонке, скрипт не передает параметр accountcode. Просто тарификация звонка у меня идет через биллинг, и он не пропускает звонок без аккаунт кода.
#23

Решил не создавать новый топик, а тут же спросить.
Ставлю сейчас на 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 да


Что-то изменилось? или как?