Jump to content

[Дело было...] Asterisk - информирование о занятости абонента


as_lan
 Share

Recommended Posts

Информация о теме: Дело было вечером. Делать было нечего...


Пост 1. Про телефонию. так как последние пару дней был занят этим.

Наверное многие, кто работает с телефонией Asterisk, знают о существовании опции Call Waiting. Функция конечно хорошая, но не без недостатка. Если абонент, кому звонят, понимает, что на второй линии другой абонент, на которого он в случае чего может переключиться, то звонящий же не узнает, разговаривает сейчас абонент на другом конце или просто не отвечает на звонок. И, казалось бы, хорошая опция этим недостатком может убить все плюсы. По крайней мере в нашем офисе сотрудники часто были недовольны друг другом, думая что на их звонки не отвечают.

После многих жалоб (да и самого эта "фича" раздражала) начал искать решение. Нашел его достаточно быстро. Оказалось что я не один, кому не очень понравилась работа это функции.


Если коротко, то в /etc/asterisk/extensions_custom.conf надо добавить

include => macro-dialout-one-predial-hook

[macro-dialout-one-predial-hook]
exten => s,1,Noop(DEVICE STATE - ${DEVICE_STATE(${DSTRING})})
exten => s,n,ExecIf($["${DEVICE_STATE(${DSTRING})}" = "INUSE"]?Playback(abonent_zanyat))
exten => s,n,ExecIf($["${DEVICE_STATE(${DSTRING})}" = "INUSE"]?Set(D_OPTIONS=Ttm))
exten => s,n,ExecIf($["${DEVICE_STATE(${DSTRING})}" = "RINGINUSE"]?Playback(abonent_zanyat))
exten => s,n,ExecIf($["${DEVICE_STATE(${DSTRING})}" = "RINGINUSE"]?Set(D_OPTIONS=Ttm))
где abonent_zanyat название проигрываемого файла (кидать в папку со звуковыми файлами). Кстати саму начитку заказывать у сторонних фирм не хотелось (уж больно много просят за пару слов), так что на помощь пришли онлайн синтезаторы речи. В частности этот http://www.oddcast.com/home/demos/tts/tts_example.php. Текст был следующий: "В настоящий момент абонент разговаривает. Вы можете дождаться ответа или перезвонить позже." Сохранить файл можно с помощью инструментов разработки браузера. При выборе голоса Milena получилось очень даже натурально. Был даже удивлен что не сразу и заметно, что это речь синтезатора (особенно если это услышать в трубке телефона).

В итоге теперь если мы звоним абоненту, который уже разговаривает, то услышим нашу запись, после чего звонок попадет на удержание. Дальше уже либо дожидаемся ответа, либо кладем трубку. Все прям как у мобильных операторов. Сотрудники довольны =). Edited by as_lan
Link to comment
Share on other sites

  • 7 months later...
Guest SilentNess

а если подробнее?? не понятно в какой контекст инклюдится данный макрос, и как он вызывается диалпланом?

Link to comment
Share on other sites

,

Я это делал на предыдущей работе. Там была связка Asterisk+Freepbx. В ручную я только в этот конфиг добавил. Остальное не трогал.  extensions_custom.conf инклюдится в extensions_aditional.conf кажется. 

 

Кстати. Там есть косяк. Перестает работать приветствие для оператора. Поэтому если включено приветствие для оператора (не для абонента), то оно отвалится. Причину найти так и не успел, так как время для тестирования было очень ограниченным. 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

×
×
  • Create New...