Usm asterisk: различия между версиями

Материал из WiKi - UserSide
Нет описания правки
Нет описания правки
 
(не показано 6 промежуточных версий 3 участников)
Строка 1: Строка 1:
[[Usm_asterisk_EN|en]] | [[Usm_asterisk|ru]]
'''USM_ASTERISK''' - модуль, взаимодействующий с Asterisk и обрабатывающий информацию о поступающих звонках абонентов
'''USM_ASTERISK''' - модуль, взаимодействующий с Asterisk и обрабатывающий информацию о поступающих звонках абонентов


Строка 25: Строка 27:
== Возможности ==
== Возможности ==


Для каждого оператора указывается внутренний SIP-номер, который требуется контролировать. Например у оператора на столе стоит аппаратный телефон, имеющий внутренний номер 5007 ''(либо программный телефон)''. Значит в учетной записи оператора необходимо указать его номер 5007.
Для каждого пользователя указывается внутренний SIP-номер, который требуется контролировать. Например у пользователя на столе стоит аппаратный телефон, имеющий внутренний номер 5007 ''(либо программный телефон)''. Значит в учетной записи пользователя необходимо указать его номер 5007.


[[Файл:20150719_05.PNG|thumb|800px|center]]
[[Файл:20150719_05.PNG|thumb|800px|center]]


При поступлении звонка на номер оператора - в браузер будет выведена информация о входящем звонке. При этом если по входящему номеру будет выполнен поиск в базе абонентов и, при нахождении, выведена информация по абоненту.
При поступлении звонка на номер пользователя - в браузер будет выведена информация о входящем звонке. При этом если по входящему номеру будет выполнен поиск в базе абонентов и, при нахождении, выведена информация по абоненту.


[[Файл:20150719_04.PNG|thumb|375px|center]]
[[Файл:20150719_04.PNG|thumb|375px|center]]
Строка 39: Строка 41:
[[Файл:20150719_02.PNG|thumb|479px|center]]
[[Файл:20150719_02.PNG|thumb|479px|center]]


Уведомления выводятся по очереди и во всех открытых вкладках САП "UserSide" у оператора
Уведомления выводятся по очереди и во всех открытых вкладках САП "UserSide" у пользователя


[[Файл:20150719_03.PNG|thumb|373px|center]]
[[Файл:20150719_03.PNG|thumb|373px|center]]
Строка 51: Строка 53:
[[Файл:2015_07_19_14_59_46.png|thumb|800px|center]]
[[Файл:2015_07_19_14_59_46.png|thumb|800px|center]]


Для нескольких операторов возможно указание одинаковых контролируемых номеров. Но лучше этим не пользоваться, т.к. в отчете по звонкам будет трудно понять какому именно оператору все-таки поступил звонок.
Для нескольких пользователей возможно указание одинаковых контролируемых номеров. Но лучше этим не пользоваться, т.к. в отчете по звонкам будет трудно понять какому именно пользователю все-таки поступил звонок.


== Настройка  ==
== Настройка  ==
Строка 84: Строка 86:
'''Настройка UserSide'''
'''Настройка UserSide'''


Убедитесь, что в конфигурационном файле САП "UserSide", который расположен по адресу ''/main/config/config.php'', присутствует следующий параметр:
Убедитесь, что в конфигурационном файле ERP "UserSide" указан [[UserSide API Key|API-ключ]].
 
$zapikey = "key";
 
key — это ваш секретный ключ для доступа к функциям API САП "UserSide". Вместо этого слова нужно вписать что-то более надежное, например сгенерированный пароль.


Далее этот ключ понадобится в файле настроек модуля usm_asterisk.
Далее этот ключ понадобится в файле настроек модуля usm_asterisk.
Строка 97: Строка 95:
1. Для работы модулю требуются модули perl: EV, Asterisk::AMI, Time::Local, LWP::UserAgent, HTTP::Request::Common, FindBin
1. Для работы модулю требуются модули perl: EV, Asterisk::AMI, Time::Local, LWP::UserAgent, HTTP::Request::Common, FindBin
   
   
2. В САП "UserSide" назначьте операторам внутренние номера телефонов, при вызовах на которые должны отображаться уведомления
2. В "UserSide" назначьте пользователям внутренние номера телефонов, при вызовах на которые должны отображаться уведомления


3. Скопировать три файла ''(usm_asterisk.pl, usm_asterisk_control.pl, usm_asterisk.conf)'' в каталог, например: ''/usr/local/us_modules/usm_asterisk/''
3. Скопировать три файла ''(usm_asterisk.pl, usm_asterisk_control.pl, usm_asterisk.conf)'' в каталог, например: ''/usr/local/us_modules/usm_asterisk/''
Строка 130: Строка 128:
  tail -f /var/log/usm_asterisk.log
  tail -f /var/log/usm_asterisk.log


== Запуск в Docker-окружении ==
Если Вы используете USERSIDE в Docker-окружении, то вам наверняка будет интересно запускать в отдельных Docker-контейнерах и внешние модули usm.
Мы предоставляем docker-окружение для запуска модуля usm_asterisk (окружение не содержит файла модуля - его необходимо загрузить из личного кабинета самостоятельно).
Загрузить docker-окружение можно по ссылке: https://github.com/userside/usm_asterisk-docker-env/releases
== Действия, необходимые для проведения отладки работы модуля usm_asterisk ==


'''Действия, необходимые для проведения отладки работы модуля usm_asterisk'''


* Отключите запуск контроллера в CRON
* Отключите запуск контроллера в CRON
Строка 140: Строка 147:
  perl usm_asterisk.pl
  perl usm_asterisk.pl
* После окончания отладочных работ остановите работу модуля Ctrl+C, измените параметры $ps_consolelog и $ps_apianswlog, установив их в 0, активируйте запуск контроллера в CRON
* После окончания отладочных работ остановите работу модуля Ctrl+C, измените параметры $ps_consolelog и $ps_apianswlog, установив их в 0, активируйте запуск контроллера в CRON


'''Подключение к AMI Asterisk (для информации)'''
'''Подключение к AMI Asterisk (для информации)'''
Строка 158: Строка 164:
  Response: Success Message: Authentication accepted
  Response: Success Message: Authentication accepted


Выполните входящий вызов, который поступит на группу операторов (Queue), после чего оператор должен ответить и положить трубку.
Выполните входящий вызов, который поступит на группу пользователей (Queue), после чего пользователь должен ответить и положить трубку.
После окончания работы с AMI выполните:
После окончания работы с AMI выполните:


  Action: logoff
  Action: logoff


Результат (файл ami.log) пришлите нам.
Результат (файл ami.log) пришлите нам, предварительно заархивировав.

Текущая версия от 17:42, 29 марта 2024

en | ru

USM_ASTERISK - модуль, взаимодействующий с Asterisk и обрабатывающий информацию о поступающих звонках абонентов

Данный модуль является заменой устаревшему win-модулю us_asteriskcall

Рекомендации по настройке системы Asterisk

Общие данные

Язык модуля: Perl

Текущая версия: см. на странице: Модули

Минимальная версия Asterisk: 10.x

Статус модуля: Платный

Необходимые модули Perl:

EV
Asterisk::AMI
Time::Local
LWP::UserAgent
HTTP::Request
FindBin

Возможности

Для каждого пользователя указывается внутренний SIP-номер, который требуется контролировать. Например у пользователя на столе стоит аппаратный телефон, имеющий внутренний номер 5007 (либо программный телефон). Значит в учетной записи пользователя необходимо указать его номер 5007.

При поступлении звонка на номер пользователя - в браузер будет выведена информация о входящем звонке. При этом если по входящему номеру будет выполнен поиск в базе абонентов и, при нахождении, выведена информация по абоненту.

Кроме абонентов выполняется поиск по телефонным номерам сотрудников

Уведомления выводятся по очереди и во всех открытых вкладках САП "UserSide" у пользователя

В разделе "Сообщения - Список звонков" можно просмотреть список всех звонков

Также в карточке абонента на вкладке "Тех.поддержка" видны все его звонки

Для нескольких пользователей возможно указание одинаковых контролируемых номеров. Но лучше этим не пользоваться, т.к. в отчете по звонкам будет трудно понять какому именно пользователю все-таки поступил звонок.

Настройка

Настройка Asterisk

В системе Asterisk для взаимодействия используется модуль Manager, который настраивается в файле /etc/asterisk/manager.conf

В этом файле необходимо добавить блок настроек для пользователя, от имени которого будет происходить взаимодействие между Asterisk и usm_asterisk

Пример блока, который необходимо вписать в файл manager.conf

[userside]
secret = usm_asterisk_secret
deny = 0.0.0.0/0.0.0.0
permit = 192.168.1.2/255.255.255.255
read = all,system,call,log,verbose,command,agent,user,config
write = all,system,call,log,verbose,command,agent,user,config
Здесь:
userside — имя пользователя
usm_asterisk_secret — пароль
192.168.1.2 — адрес сервера, на котором функционирует модуль usm_asterisk

После выполнения этой команды необходимо войти в консоль asterisk и выполнить команду перезагрузки конфигурации

$ asterisk -r
> reload
> exit


Настройка UserSide

Убедитесь, что в конфигурационном файле ERP "UserSide" указан API-ключ.

Далее этот ключ понадобится в файле настроек модуля usm_asterisk.


Настройка модуля usm_asterisk

1. Для работы модулю требуются модули perl: EV, Asterisk::AMI, Time::Local, LWP::UserAgent, HTTP::Request::Common, FindBin

2. В "UserSide" назначьте пользователям внутренние номера телефонов, при вызовах на которые должны отображаться уведомления

3. Скопировать три файла (usm_asterisk.pl, usm_asterisk_control.pl, usm_asterisk.conf) в каталог, например: /usr/local/us_modules/usm_asterisk/

4. Указать настройки в файле usm_asterisk.conf

- Подключение к asterisk-manager
- Подключение к api UserSide
- Путь хранения логов, если нужно
- В переменой $zastertype укажите значение в соответствии с используемой версией Asterisk:
 1 - Asterisk == 11 (AMI v1)
 2 - Asterisk <= 10 (AMI v1)
 3 - Asterisk >= 12 (AMI v2)
- Перечислите в значении переменой @zasterfromcontexts все транки, на которых необходима обработка входящих соединений.
 Формат записи, например: ("from-gsm", "from-pstn", "from-external")

5. В файле usm_asterisk_control.pl прописать правильный путь к perl (можно узнать выполнив which perl)

6. в CRON добавить строку, запускающую контроллер, например, каждые 2 минуты (снова полный путь к perl для вашей системы)

*/2     *       *       *       *       user    /usr/local/bin/perl /usr/local/us_modules/usm_asterisk/usm_asterisk_control.pl >> /var/log/usm_asterisk-restart.log 2>&1

7. Дождаться выполнения контроллера, который запустит модуль на выполнение (либо можно запустить вручную: perl usm_asterisk.pl &)

8. После запуска должны создаться лог-файлы usm_asterisk.log и usm_asterisk.err - изучите их содержимое, чтобы убедиться в отсутствии ошибок. Так же будет создан файл usm_asterisk.pid в каталоге с файлами модуля.

9. Настройте демон newslog (/etc/newslog.conf) на ротацию логов модуля. Просто добавьте строку:

/var/log/usm_asterisk.*        644  10     200  *     GJC

10. Проверьте работоспособность модуля, выполнив телефонный вызов. Контролировать работу модуля можно наблюдая за логами в реальном времени:

tail -f /var/log/usm_asterisk.log

Запуск в Docker-окружении

Если Вы используете USERSIDE в Docker-окружении, то вам наверняка будет интересно запускать в отдельных Docker-контейнерах и внешние модули usm.

Мы предоставляем docker-окружение для запуска модуля usm_asterisk (окружение не содержит файла модуля - его необходимо загрузить из личного кабинета самостоятельно).

Загрузить docker-окружение можно по ссылке: https://github.com/userside/usm_asterisk-docker-env/releases


Действия, необходимые для проведения отладки работы модуля usm_asterisk

  • Отключите запуск контроллера в CRON
  • Остановите запущенное приложение и убедитесь, что ни одна копия приложения не запущена
ps ax | grep usm_asterisk
  • Измените в конфигурационном файле модуля usm_asterisk.conf параметры $ps_consolelog = 1, если необходимо выводить лог на экран, а не в файл, и/или, если необходимо выводить ответы API-сервера, $ps_apianswlog = 1
  • Запустите модуль вручную при помощи следующей команды. При запуске модуль выведет информацию об этом на экран.
perl usm_asterisk.pl
  • После окончания отладочных работ остановите работу модуля Ctrl+C, измените параметры $ps_consolelog и $ps_apianswlog, установив их в 0, активируйте запуск контроллера в CRON

Подключение к AMI Asterisk (для информации)

telnet 127.0.0.1 5038 | tee ami.log

Аутентификация (скопируйте текст и вставьте в сессию AMI, предварительно изменив имя и пароль):

Action: login
Username: admin
Secret: passwd1234

Дважды нажмите Enter

При правильном входе должны увидеть:

Response: Success Message: Authentication accepted

Выполните входящий вызов, который поступит на группу пользователей (Queue), после чего пользователь должен ответить и положить трубку. После окончания работы с AMI выполните:

Action: logoff

Результат (файл ami.log) пришлите нам, предварительно заархивировав.