Вы хотите написать все сами или у вас будет фреймворк вроде VXML для работы? Если вы просто хотите писать файлы VXML и JSP, вам нужен браузер VXML. Если вы хотите полностью написать все самостоятельно, то создание браузера VXML, вероятно, будет излишним, и независимо от того, делаете ли вы браузер VXML или что-то еще, вам нужно будет побеспокоиться об абстрагировании оборудования - IVR с одним голосом/факсом/модемом будет нужен другой низкоуровневый код, чем IVR с картами Dialogic, подключенными к линиям T1, и он будет отличаться от кода, который обрабатывает только вызовы SIP.
Если предположить, что у вас уже есть браузер VXML и вам просто нужно предоставить файлы VXML и JSP, то вам нужно беспокоиться о том, хотите ли вы просто поток вызовов или собираетесь выполнять внутреннюю интеграцию. Если ваш IVR просто собирается ответить на вызов, запросить некоторую информацию от вызывающего абонента, а затем воспроизвести дополнительную информацию и повесить трубку или перевести вызов, тогда все становится очень просто — вам вообще не нужна Java. Java необходима для внутренней интеграции.
Предполагая, что у вас будет внутренняя интеграция - будь то просто база данных или веб-сервисы для другого сервера, вам нужно беспокоиться об асинхронном выполнении внутренних вызовов - если вызывающие абоненты услышат более секунды мертвого эфира без предупреждения, они подумают IVR не работает и зависает. Итак, когда поступает звонок, вам нужно отправить первоначальный запрос данных, затем сказать «Добро пожаловать в мой IVR» и затем попытаться получить результат. Если результат еще не возвращен, вам нужно сказать что-то еще, например: «Пожалуйста, подождите, пока я получу ваши данные», а затем проверьте еще раз. В конце концов, если запрос не возвращается, вам нужен запасной план — вы можете либо сказать «Эта услуга в настоящее время недоступна», а затем перевести или повесить трубку, либо вы можете предложить IVR с ограниченным обслуживанием. Что бы вы ни делали, вы не хотите, чтобы клиент когда-либо слышал больше секунды тишины, если вы специально не сказали им, что ждете чего-то — либо ждете их ввода, либо ждете данные их учетной записи (или что-то подобное) .
Чтобы иметь такой асинхронный опыт работы с VXML и JSP, вам потребуется очередь запросов в памяти и служба выполнения, которая может предоставить рабочие потоки для обслуживания этих запросов. Таким образом, вы можете поставить запрос в очередь и продолжать периодически проверять поток вызовов IVR для получения результата. Служба выполнения в конечном итоге обработает запрос и обновит его с результатом. Затем, когда IVR проверит и запрос будет доступен, он сможет использовать эту информацию. Но если результат не вернется вовремя, IVR сдастся и прекратит проверку, поэтому вам нужен статический поток, который сканирует очередь и через определенный промежуток времени отменит запрос, если служба выполнения обрабатывает его, а затем удалить запрос из очереди.
Браузер VXML ставит голос в очередь и не ждет, пока он будет фактически воспроизведен, пока не будет получен ввод вызывающего абонента, поэтому, если вы используете голос для остановки во время извлечения данных, тогда голосовая подсказка должна быть прикреплена к грамматике, которая не принять любой допустимый ввод только для того, чтобы IVR знал, когда голос закончен. Если вам абсолютно необходим результат внутреннего запроса, прежде чем продолжить поток вызовов, вам нужно будет циклически проверять результат до тех пор, пока он либо не прибудет, либо не истечет небольшой тайм-аут (сколько времени зависит от того, предупредили ли вы их, что это может занять некоторое время). пока или нет). То же самое применимо и в этом случае - вам нужно будет воспроизвести небольшое молчание, прикрепленное к грамматике, чтобы поток вызовов ждал, прежде чем снова проверить результат - обычно нет особого смысла проверять чаще, чем 100-200 мс.
Если вы не собираетесь использовать браузер VXML, а вместо этого будете писать что-то самостоятельно, то в основном применим тот же совет. Но если вы собираетесь иметь внутреннюю интеграцию, я бы порекомендовал сделать так, чтобы система всегда ждала окончания воспроизведения голосовой подсказки, а не просто ставила ее в очередь - это делает все НАМНОГО проще. Вам по-прежнему потребуются очередь в памяти и пул выполнения, чтобы внутреннюю интеграцию можно было выполнять в фоновом режиме.
person
Jerry Jeremiah
schedule
16.11.2013