harry_coumarry

IVR systems tech notes 1

Feb. 28th, 2008 | 03:33 pm
From:: harry_coumarry

В свое время мне пришлось столкнуться с разработкой IVR-системы для IP-телефонии на базе Asterisk. Обычно (а значит неверно) такие системы строятся на базе стандартного диалплана, с записанными через сам же астериск гнусавыми офисными голосами. Для изменения какого-либо пункта такого меню бородатый одмин лезет в конфиг, правит диалплан, ебется с макросами и экстеншенами. Понятно, что такое положение часть этих бородатых устраивает, так как кроме них никто не в состоянии управлять телефонной системой, а значит они оправдывают свою нищенскую зарплату и другой rm / -rf. Хотелось же получить систему, конфигурируемую дистанционно через web (оптимально), или на крайний случай некоторым приложением (кал), причем с пониженными требованиями к персоналу, управляющему этим дерьмом - то есть, интерфейс+независимый IVR-бэкэнд.

Для начала нужно было определиться с требованиями к такой системе. Что такое самый обычный IVR? Это хуета вроде "Здрасте вы пазванили туда-то, ваш званок беспезды важен для нас, нажмити 1 если заебались ждать", чувак нажимает 1, вешается трубка, чувак в ахуе. Примерно так.

Ну это понятно, хули нам, проиграть файл, да принять ввод, как два пальца обоссать. Чо там еще? А если ввод больше одной цифры? Ну, проиграть файл да принять эти цифры. Потом проиграть другой файл.

Короче заябывать пользователя нажиманием на кнопки и слушанием этова говна. При такой системе пользователь, уже не в первый раз попадающий в этот IVR, может захотеть набрать сразу 135, к примеру, чтобы попасть в пятый пункт третьего пункта первого меню, да вот ему и хуй, ибо промптов могло быть несколько после ответа системы, и они хуй клали на его ввод или вообще были не прерываемыми.
Отсюда стоновицо понятна:
Первое требование - все промпты в IVR-системе должны быть прерываемыми и не ебёт.
Второе требование - весь пользовательский ввод за время сессии должен сохраняться.

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

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

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

Короче я заебался печатать и прадолжу каданебуть.

Link | view all comments


Reply

From:
(will be screened)
Identity URL: 
имя пользователя:    
Вы должны предварительно войти в LiveJournal.com
 
E-mail для ответов: 
Вы сможете оставлять комментарии, даже если не введете e-mail.
Но вы не сможете получать уведомления об ответах на ваши комментарии!
Внимание: на указанный адрес будет выслано подтверждение.
Username:
Password:
Subject:
No HTML allowed in subject
Message:



Notice! This user has turned on the option that logs your IP address when posting.