0,0
рейтинг
28 марта 2013 в 23:17

Управление → Интеграция Asterisk и SugarCRM tutorial


Попробуем это все объединить и сделать себе удобный call-центр.


Изначально стояла задача установить CRM для работы в связке с Asterisk чтобы вести базу клиентов и отслеживать поступающие звонки. Под описание потребностей и по заявленному наличию возможности объединения подходили vTigerCRM и SugarCRM. С vTiger у нас дружба не сложилась — их модуль, что идет в комплекте с движком, весьма небрежно относился к своим обязанностям: пропускал звонки или показывал их с задержкой. В SugarCRM напротив, модуль под названием YAAI KINAMU/abcona Open Asterisk Connector работает как часы. Он не идет в комплекте, его мы установим отдельно. Принцип работы и функционал этих CRM схож, так что мы остановили свой выбор на SugarCRM Community Edition. Есть к этой системе отличный модуль русификации — RUSSIAN RAPIRA LANGUAGE PACK. Но я буду показывать настройку пока без него.

Не буду рассказывать как устанавливать SugarCRM — об этом есть много информации в сети. Сразу перейду к способу интеграции с телефонией.

Качаем модуль YAAI отсюда. Не распаковываем. Устанавливаем через админку CRM: Admin -> Module Loader. Закачиваем, жмем 'Install'. Снова заходим в админку, ищем в самом низу наш модуль, заходим в конфигуратор. Здесь нам понадобятся данные из файла /etc/asterisk/manager.conf нашего сервера Asterisk. Вы можете отредактировать manager.conf и создать нового пользователя AMI или использовать учетную запись admin, сменив пароль по умолчанию (если вы не сделали это еще при установке Asterisk то ваша система подвергается риску). Здесь же можно задать, с какого хоста разрешено подключаться AMI-менеджеру. У меня это 127.0.0.1 так как у нас CRM на этой же машине. Берем эти данные и копируем в настройки модуля YAAI: host, login, port, secret. Осталось вбить SOAP пользователя. Пусть это будет любой пользователь CRM со своим паролем. Остальные настройки можно не трогать вообще.

Так как последняя версия модуля сама не добавляет в профиль пользователя поле для внесения внутреннего телефона, нам придется поработать над интерфейсом самим. Идем в Admin -> Studio. Ищем папочку User, раскрываем список, находим Layouts, Edit View. Открывается редактор формы правки пользователя. Перетаскиваем сперва слева-на-право New Panel и New Row. На них сверху накладываем Asterisk Extensinon, Magic Dial Buttons, Call notification. Сохраняем вид: Save & Deploy.



Надеюсь у вас уже есть пользователь CRM у которого есть свой SIP телефон. Закрепим за его учетной записью его номер. Заходим в Admin -> User Management. Выбираем пользователя, жмем Edit. Сверху видим панель, которую мы создали. В Asterisk Extension вводим внутренний номер пользователя и ставим обе галочки: Magic Dial — для быстрого отзвона по клику иконки возле сохраненного номера (звонит сперва наш аппарат — берем трубку — идет набор исходящего номера) и Call Notification — всплывающее окошко с номером и другими данными звонящего.



Теперь необходимо запустить PHP скрипт, который будет взаимодействовать с Asterisk. Переходим в папка_с_SugarCRM/custom/modules/Asterisk и запускаем:

php asteriskLogger.php


Если все в порядке, то мы увидим сообщение «Waiting for events». Если выдаются ошибки, значит нужно проверить настройки астериск-менеджера и SOAP.

В принципе, всё должно работать, но, чтобы нам всё время не запускать скрипт вручную, сделаем его сервисом.

1. Качаем файлик asterisk_logger:

wget https://raw.github.com/blak3r/yaai/master/misc/asterisk_logger 


или извлекаем его из zip-архива модуля YAAI в misc/asterisk_logger.
2. Копируем его в /etc/init.d/
3. Выставляем атрибуты:

chmod 755 /etc/init.d/asterisk_logger


4. Открываем его для правки в редакторе.
-редактируем путь где лежит asteriskLogger (обычно это /var/www/html/sugarcrm/custom/modules/Asterisk/asteriskLogger.php)
-выставляем пользователя от которого запущен веб-сервер (обычно это asterisk)
5. Инсталлируем скрипт:
-для Centos, Red Hat, Fedora Core, Suse, и т.д.:

chkconfig --add asterisk_logger


для Debian, Ubuntu и подобных:

update-rc.d -f asterisk_logger start 80 2 3 4 5 . stop 30 0 1 6 .


Проверяем запустив

/etc/init.d/asterisk_logger start


Если он запустился значит всё сделали правильно. Если сыпятся ошибки, то смотрим далее. Вполне вероятно, что в asterisk_logger придется удалить символы переноса строки ^M. Можно сделать это в редакторе встроенном в mc. Также, если у вас CentOS 6.X то придется изменить в нем и строчку с
. /lib/lsb/init-functions 

на
/etc/init.d/functions

На этом всё. Можно звонить и проверять как появляются всплывающие окошки с номерами в CRM. Правда, если номер будет меньше четырех цифр, то он будет отсеян. Настраивается это поведение в модуле YAAI в CRM.



Pls, подкиньте кармы если кому-то пригодилась статья.
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Управление

Комментарии (36)

  • –4
    Посмотрите в сторону TeamWox.

    Это решение, которое полностью заменяет Asterisk и SugarCRM, является единым, а также включает в себя TeamWox Communicator(софтфон и мессенджер), работающий с массой USB телефонов. В нем весь набор PBX телефонии и очень удобно для организации хелпдесков.
    • +2
      Вы очень рискуете, рекомендуя недешёвую платную и закрытую систему в топике по интеграции двух опенсорцев.

      Кроме того, эта система не просто недешёвая, а по-конски дорогая.



      За эти деньги можно купить Exchange+Lync+Sharepoint-based HelpDesk
      • +1
        Цены у MetaQuotes вообще не детские. Ихний МТ4 стоит ~$100к (мы брали за 75).
      • 0
        а если ещё накинуть чуток, то что нибудь хардварное типо Avaya
        • 0
          Всегда боялся хардварных решений из-за отсутствия открытого кода, расширяемости, платных лицензий и тд…
  • 0
    image

    Спасибо за статью. Сделал все по мануалу как здесь описано.
    Модуль не подтягивает карточку клиента, а попросту окошко и многое попросту не работает.

    Решение долеко до той же VtigerCRM а жаль ((…
    • 0
      Когда звонит клиент для которого уже сохранили данные то в окошке видно имя клиента и с кем он у вас работает, т.е. в виде контрагента. Нажимаем на имя — открывается вся карточка клиента. Что многое?
  • 0
    У вас возникали проблемы с отображением входящих звонков? У меня не появляется popup, при исходящих всё ОК.
  • +1
    Нужно позвонить из города или мобильного на астериск и на оператора. Если звонить с внутреннего номера то окошка не будет. Так как режутся номера меньше 4-х цифр, т.е. внутренние. Это можно настроить в модуле коннектора в CRM. Еще коннектор не работает с очередями. Обещают исправить в следующей версии.
    • 0
      Да, я пробовал звонки с мобильного — окно не всплывает. Пытаюсь найти причину.
    • 0
      Можете сказать, какая у вас версия php, YAAI, SugarCRM?
      • +1
        Sugarcrm версия 6.5.11 (Сборка 8754)
        YAAI 2.6.0b
        PHP 5.3.3
      • +1
        Какой путь проделывают ваши звонки извне? Голосовой шлюз? Если да, то какой? Есть вероятность, что при звонке извне у вас CALLERID(name) передается. А YAAI только видит CALLERID(num).
  • 0
    PHP 5.3.3

    У меня 5.3.10… где-то ругались на эту версию, попробую downgrade сделать.
    • +1
      подождите, модуль судя по всему нормально работает на этой версии PHP. Выше посмотрите про CALLERID. Можете вывод Астериска посмотреть asterisk -r
      Там видно при звонке, что отдается далее name или num.
      • 0
        ! --- Event -----------------------------------------------------------
        !                Event --> Dial                                              
        !            Privilege --> call,all                                          
        !             SubEvent --> Begin                                             
        !              Channel --> DAHDI/1-1                                         
        !          Destination --> SIP/261-0000ea4b                                  
        !          CallerIDNum --> 911XXXXXXX                                        
        !         CallerIDName --> <unknown>                                         
        !             UniqueID --> 1365153279.80354                                  
        !         DestUniqueID --> 1365153289.80355                                  
        !           Dialstring --> 261                                               
        ! ---------------------------------------------------------------------
        ! Dial Event src=DAHDI/1-1 dest=SIP/261-0000ea4b
        ...
        ...
        [2013-04-05 13:15:03]
        ! --- Event -----------------------------------------------------------
        !                Event --> Hangup                                            
        !            Privilege --> call,all                                          
        !              Channel --> DAHDI/1-1                                         
        !             Uniqueid --> 1365153279.80354                                  
        !          CallerIDNum --> 911XXXXXXX                                        
        !         CallerIDName --> <unknown>                                         
        !                Cause --> 16                                                
        !            Cause-txt --> Normal Clearing                                   
        ! ---------------------------------------------------------------------
        PHP Warning:  mysql_fetch_array() expects parameter 1 to be resource, boolean given in /var/www/sugarcrm/custom/modules/Asterisk/asteriskLogger.php on line 489
        # +++ findCallByAsteriskId(1365153279.80354)
        ! Warning, results set was empty!
        [1365153279.80354] FAILED TO FIND A CALL (note: there are two hangups per call, so this might not be an error)
        

        Если я правильно понял разработчика, то если
        Channel --> DAHDI/1-1 или Destination --> SIP/261-0000ea4b
        содержат внутр. номер (SIP/261-0000ea4b), то звонок определяется как внутренний и попап не появляется.
        • +1
          На телефоне отображается номер 911XXXXXXX? Звонок поступает из DAHDI по правилу для входящих сразу на внутренний номер? Или у вас очереди настроены или перевод?
          • 0
            Звонок с мобильного -> Голосовое меню, добавочный номер -> Звонок на IP-телефон. Номер на телефоне определяется как 911ХХХХХХХ.
            • +1
              Так… Callerid(name) тоже видимо нужен. Попробуйте правки внести в диалплан и назначить CALLERID(name)=CALLERID(num) во входящем контексте.
            • +1
              UPD: у вас Destination --> SIP/261-0000ea4b. Это назначение. Это не влияет.
            • +1
              [from-dvg]
              exten => _.,1,Set(CALLERID(num)=8${CALLERID(name)})
              exten => _.,n,Set(CALLERID(name)=${CALLERID(num)})
              exten => _.,n,Goto(from-pstn,${EXTEN},1)

              Что-то вроде этого. Только у вас контексты другие и у меня наоборот, нехватало CALLERID(num). Во входящем маршруте я отправляю на [from-dvg] который дописал отдельно здесь. Делаю правки отправляю, туда, куда звонок шел изначально.
              • +1
                Все, понял. Я тоже по этим ссылкам ходил:) Вам просто нужно номер 261 (это у вас транк) переделать во что-то больше четырех знаков. У меня был транк сперва 700, переделал в 10000 и сработало.
                • 0
                  ! --- Event -----------------------------------------------------------
                  !                Event --> NewCallerid                                       
                  !            Privilege --> call,all                                          
                  !              Channel --> DAHDI/5-1                                         
                  !          CallerIDNum --> 911XXXXXXX                                        
                  !         CallerIDName --> 911XXXXXXX                                        
                  !             Uniqueid --> 1365170481.80732                                  
                  !      CID-CallingPres --> 3 (Presentation Allowed, Network Number)          
                  ! ---------------------------------------------------------------------
                  * {e['UniqueId']} CallerID  Changed to: 911XXXXXXX
                  [2013-04-05 18:01:28]
                  ! --- Event -----------------------------------------------------------
                  !                Event --> Dial                                              
                  !            Privilege --> call,all                                          
                  !             SubEvent --> Begin                                             
                  !              Channel --> DAHDI/5-1                                         
                  !          Destination --> SIP/TEST-0000eb6b                                 
                  !          CallerIDNum --> 911XXXXXXX                                       
                  !         CallerIDName --> 911XXXXXXX                                        
                  !             UniqueID --> 1365170481.80732                                  
                  !         DestUniqueID --> 1365170482.80733                                  
                  !           Dialstring --> TEST                                              
                  ! ---------------------------------------------------------------------
                  ! Dial Event src=DAHDI/5-1 dest=SIP/TEST-0000eb6b
                  

                  Эх, даже при таком варианте ни-че-го.
                  Спасибо вам! В понедельник попробую с ясной головой, а-то уже глаз замылился, мозг буксует.
  • 0
    TEST — 4 символа… Сделайте именно цифрами и больше четырех.
    • 0
      Попробовал с номером 26100 — ничего не изменилось. Возникает ощущение, что дело не в номере )) Если что-нибудь найду — отпишусь.
  • 0
    А Вы пробовали ставить V3? Код есть на гитхабе, и даже работает (не считая периодических глюков и багов).
    Сколько у вас пользователей? Я к тому, что он не столь быстр, как хотелось. Есть определенные рекомендации и настройки по ускорению, но при большом количестве юзеров задержки бывают до 5 секунд (а может и больше). Не сталкивались с такой проблемой?
    • 0
      Я лично не ставил. Меня пока все устраивает. Очередей у нас нет, так что пока модуль справляется с задачами. А V3 неофициальный релиз?
      • 0
        Неофициальный. Но в нем много вкусных плюшек — fake call (чисто проверить попап), быстрее работает, визуально приятнее. Пишут что поддерживает очереди — на практике не проверялось. Проще добавлять проверочные поля.
  • 0
    А модуль автообзвона для SugarCRM есть ??
  • 0
    Мы активно разрабатываем собственное решение по интеграции SugarCRM и Asterisk. Если интересно ссылка www.richlodesolutions.com/en/information-sugar-dialer.html и скрин как это выглядит.

    Вот так выглядит всплывающий попапчик с информацией о том кто звонит или том кому вы звоните. Из него же можно сразу создать лида, скачать файл разговора и т.д. Функций много.
    s10.postimg.org/tfcnyqh95/image.jpg
    • 0
      хм. я правильно понимаю, стоимость решения 2000$ + единовременно за пользователя по 100$?
      • 0
        да, правильно
  • 0
    image

    С русским языком проблемы… Что можно предпринять?
    • 0
      Utf-8 включите в шуге
      • 0
        Я вообще не нумб ) Но может вы мне расскажите где включить?

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.