Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

elastix_kak_avtomaticheskaja_sistema_zapisi_soobschenij_s_otpravkoj_ix_ispolniteljam [2013/11/19 16:08] (текущий)
Строка 1: Строка 1:
 +====== Elastix как автоматическая система записи сообщений с отправкой их исполнителям ======
 +
 +**Задача:​** сделать чтобы люди могли звонить по многоканальному городскому номеру,​ выбирать район своего проживания,​ выбирать службу к которой относится данное обращение и потом записать сообщение о, скажем разбитых фонарях на улице, или о протекшем водопроводе во дворе и тому подобных проблемах. Данное сообщение передается в нужные органы которые будут заниматься устранением данной проблемы.
 +
 +При решении данной задачи был максимально использован функционал системы FreePBX, чтобы было удобнее менять что либо при изменении структуры меню и т.п.
 +
 +У меня использовалась сборка Elastix, FreePBX был обновлен через веб интерфейс до версии FreePBX 2.10.1.4.
 +
 +Итак нам понадобится транк чтобы добыть номер и линии. У нас был маленький провайдер Farline. Поэтому опишу настройки для него. В меню FreePBX заходим Connectivity>​Trunks>​Add SIP trunk и начинаем заполнять:​
 +
 +  * Trunk Name: имя транка
 +  * Outbound CallerID: номер телефона который требует провайдер (тут он всего 1) XXXXXX
 +  * В Outgoing Settings>​Trunk Name: Имя транка
 +  * PEER Details: \\ host=sip.farline.net \\ username=логин даёт провайдер \\ secret=пароль тоже даёт провайдер \\ type=peer \\ qualify=no \\ disallow=all \\ allow=ulaw \\ canreinvite=no \\ nat=yes \\ fromuser=тут тоже логин \\ fromdomain=тут белый айпишник с которого выходит в интернет ваш Астериск \\ insecure=invite
 +
 +Incoming Settings:
 +USER Context: Имя транка
 +
 +USER Details:
 +host=sip.farline.net
 +username=логин провайдера
 +secret=пароль даёт провайдер
 +type=user
 +
 +В поле регистрации вписываем:​
 +логин:​пароль@sip.farline.net/​логин
 +
 +Всё, транк у нас настроен и линии работают.
 +Создаём один телефончик для тестов и проверок. Applications>​Extensions>​Submit
 +
 +Вводим User Extension — допустим 100, Display Name — Имя, secret — пароль и нажимаем Submit. Далее устанавливаем любой SIP клиент на свой вкус, и в его настройках указываем ip адреса Астериска,​ 100 — как логин и пароль который указали ранее. Теперь можно приступать к записи.
 +
 +Для голосового меню нам понадобятся записи,​ причем в большом количество,​ советую набросать схему как это будет работать и продумать сколько записей будет нужно. Для создания записей удобно воспользоваться Admin>​System Recordings, там после надписи «If you wish to make and verify recordings from your phone, please enter your extension number here:» вводим номер своего программного телефона 100 и жмём Go. Теперь позвонив на номер *77 с телефона и следуя голосовым подсказкам можно записать сообщение. Потом вписать в поле Name this Recording — название записи и сохранить. Дальше в том же духе.
 +
 +Кстати если ваши голосовые данные не отличаюся мелодичностью и в итоге записи будет делать девушка — профессионал,​ то стоит также обезопасить себя от долгого и нудного процесса по их переделке. Сделать это можно зайдя в запись справа в списке и поставив галочку Optional Feature Code, после недолгого раздумья Астериск выдаст номер типа *295 и потом можно сохранять. Позвонив на этот номер система даст возможность прослушать данную запись,​ перезаписать и сохранить её на горячую. В последствии вы можете составить список записей и табличку какая из них к какому пункту относится,​ потом посадить девушку — профессионала за компьютер,​ дать ей микрофон с наушниками и настроить SIP клиент. Теперь она может вооружившись этими вещами и «хотелками» начальства сама менять все записи согласно табличке соответствия номера телефона для смены записи и её местанахождения в структуре. Это сильно облегчит работу. По поводу качества записи хочу сказать одно — если микрофон нормальный,​ то качество записи будет тоже вполне сносным. Студийные записи особого смысла не имеют т.к. через простой телефон вы этого все равно не сможете оценить.
 +
 +Теперь надо бы создать приветствие,​ которое будет произноситься когда люди звонят на данный телефон.
 +
 +Заходим Applications>​ Announcement и вписываем:​
 +
 +Description:​ имя приветствия,​ Recording: выбор записи из списка,​ ну и Destination after playback: куда пойдёт звонок после приветствия,​ у нас это будет IVR который мы с вами ещё не создали.
 +
 +Создаём IVR, заходим Applications>​IVR>​Add new IVR и заполняем нужные вам поля, в подсказках вполне понятно написано что есть что. Либо можно почитать про это в моей статье. Снизу выбираем какую кнопку нажать (Ext), и куда будет попадать абонент после нажатия данной кнопки.
 +
 +Схему меню можно делать сколько угодно разветвлённой,​ дальше опишу нюансы использования данной системы у меня. Если читатель помнит задачу,​ то нам надо организовать запись сообщения которую потом будут прослушивать ответственные лица, да и желательно чтобы данным лицам пришел email с напоминанием что запись поступила и её можно прослушать по «такому то» адресу. Пойдя по простому пути с использованием готового функционала,​ будем пользоваться не совсем стандартными подходами.
 +
 +Заходим в Extensions и создаём их количество — равное количеству служб, в которые будет приходить сообщение,​ у меня вышло 11 штук. Пароли можно указывать любые т.к. мы в них даже заходить не будем. Но обязательно в разделе каждого Voicemail ставим статус Enabled и задаём пароль ящика почты, и конечно Email address на который будет высылаться сообщение(причем оно может высылать файлы самих записей,​ но данный функционал мы не использовали,​ чтобы не перегружать почту, галочка есть в настройках самого почтового ящика Voicemail).
 +
 +Теперь повесив в конце IVR этот Extension, он, естественно,​ будет выключен и звонок попадёт на голосовую почту. Теперь будем заниматься решением проблем.
 +
 +Проблема номер 1. У заказчика был сервер Microsoft Exchange и его решили использовать в качестве шлюза, чтобы письма шли не напрямую от Астериска. Чтобы этого добиться нам нужно прописать в конфиге /​etc/​postfix/​main.cf (У меня стоит сборка Elastix и тут установлен именно postfix) параметр relayhost = ip адрес: порт. Данная проблема решена.
 +
 +Проблема номер 2. В сообщении которое приходит на почту вам может не понравиться английский текст, либо же нужно будет сменить ссылку по которой надо заходить в кабинет Voicemail-а,​ если вы его опубликуете. Поэтому заходим в шаблон /​etc/​asterisk/​vm_email.inc и редактируем себе на здоровье то — что нужно присылать. ​
 +
 +Либо вы можете зайти в Settings>​ Voicemail admin>​Settings и там подредактировать тоже самое через веб интерфейс FreePBX. Кстати тут же выставляется в поле format через разделитель "​|"​ форматы в которых будет храниться голосовая почта, этим я пользовался чтобы подменять записи,​ тоесть можно туда прописать wav49|wav|ulaw|gsm,​ и каждое сообщение принятое на голосовую почту будет храниться сразу во всех этих форматах. Нужно для решения проблемы номер 3.
 +
 +Проблема номер 3 и сразу же 4. Одно исходило из другого поэтому опишу все сразу. Заказчик поставил задачу — чтобы в некотрых пунктах меню сообщения дублировались на несколько организаций,​ к примеру районное ЖЭО и Водоканал. Данную проблему можно решить используя группы Voicemail Blasting. Там можно сгруппировать несколько ящиков в одну группу,​ и на неё будут приходить записи,​ причем физически они будут храниться в одном экземпляре,​ а во втором ящике будет просто ссылка на файл. Плюс тут можно выбрать пункт Beep Only — No confirmation,​ тоесть после истечения времени ожидания в 3 секунды(установлено в IVR), после сообщения в голосовом меню IVR, попадает на группу Voicemail Blasting. При оригинальном Voicemail у меня не получилось,​ чтобы после проговаривания приветствия на пункте IVR, через 3 секунды звучал сигнал и сразу шла запись. Поэтому я переделал всё на группы,​ даже одиночные ящики(задав в группе Voicemail Blasting всего 1 ящик). ​
 +
 +Потом проявляется проблемка,​ правда в небольшом объёме,​ после записи Астериск начинает по английски разговаривать с клиентом предлагая прослушать запись,​ сохранить или перезаписать,​ если положить трубку то запись всё равно создается и отправляется писмо на почту, но функционал решено было оставить. Накатывание на сервак русских голосовых файлов помогло мало, из за того, что голос в файлах отличался от всего остального меню. Решили перезаписать эти файлы. Но тут нюанс — некотрые храняться только в формате gsm, некотрые в формате ulaw, и где то в конфигах прописаны именно такие форматы файлов,​ следовательно менять формат так просто не получится,​ и я решил что легче подменить звуковые файлы, чем править конфиги FreePBX. Тут то нам и поможет решение с форматами записи в конфиге Voicemail-а. Выставляем там все форматы сразу, как я писал в предыдущем пункте. Потом делаем сделующее. Звоним в эту почту и во время звонка смотрим в консоль Астериска,​ там будет видно какие файлы он запускает. Выписываем эти файлы и запоминаем текст который в них говориться,​ их там всего около 5 штук. Потом запустив поиск смотрим где они лежат. Сразу даю подсказку это будет скорее всего /​var/​lib/​asterisk/​sounds/​ и там уже могут лежать в папках типа en или ru, в зависимости от того какой язык задан. ​
 +
 +Вобщем звоним в голосовую почту, заставляем девушку — профессионала произнести нужную фразу, смотрим в консоли какой номер файла в записи и в какой почтовый ящик упало(у меня записи в почтовых ящиках хранятся в /​var/​spool/​asterisk/​voicemail/​default/​номер extensions/​INBOX/​),​ и подменяем данным файлом нужного формата — тот файл что вы нашли. Всё. Теперь у вас будут свои файлы с нужным вам голосом. Операция на самом деле занимает минут 15, писать дольше чем делать. ​
 +
 +Проблема номер 5. Места на серваке маловато,​ а файлов с обращениями много. Значит надо их хранить где то ещё. У заказчика оказался сервер с Windows server 2008 и винтами в Raid — решили хранить там. На Windows расшариваем папку, создаём юзера под которым будем с ней работать и даём этому юзеру по сети полный доступ на эту папку. Теперь надо примонтировать её в Астериск. ​
 +
 +Чтобы она монтировалась сразу при загрузке я прописал монтирование в /etc/fstab. Выглядит строчка так:
 +
 +//​ip-сервера_с_Windows/​Папка_в_которую_кладём /​куда_монтировать_в_Астериске/​Папка_с_записями cifs username=домен_если_надо/​Имя_пользователя,​password=пароль 0 0 
 +
 +Теперь при загрузке у нас шара из Windows монтируется на Астериск,​ надо перенести туда записи разговоров. Менять конфиги Астериска не будем, и просто пропишем симлинк:​
 +
 +ln -s /​куда_монтировали_в_Астериске/​Папка_с_записями /​var/​spool/​asterisk/​voicemail/​default
 +
 +Собственно теперь всё готово. Записи можно просматривать с Windows Server, и физически они лежат там.
 +
 +Вход в интерфейс с записями находиться по адресу https://​ip-адрес-Asterisk/​recordings/​. Вход туда происходит используя номер extension и пароль для Voicemail, который задаётся в настройках extension. ​
 +
 +Резюмируя все наши действия — что мы получили:​ Люди звонят на номер, слушают приветствие с предупреждением о записи разговора,​ выбирают свой район и нужную службу,​ диктуют сообщение (даже если посередине бросить трубку — оно все равно запишется),​ после этого на почту организации исполнителя приходит письмо,​ используя шлюз Microsoft Exchange, в котором сообщается что поступило новое обращение,​ с какого номера,​ его длительность и ссылка по которой нужно зайти чтобы его прослушать. Оттуда же его можно сохранить к себе на компьютер,​ если есть такая необходимость.
  
elastix_kak_avtomaticheskaja_sistema_zapisi_soobschenij_s_otpravkoj_ix_ispolniteljam.txt · Последние изменения: 2013/11/19 16:08 (внешнее изменение)
GNU Free Documentation License 1.3
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0 Яндекс.Метрика