Изучаю разработку программного обеспечения IVR [закрыто]

StackOverflow https://stackoverflow.com/questions/1457479

Вопрос

Компания, в которой я работаю, ищет реализацию IVR, которая была бы полностью совместима с любой потенциальной УАТС / IVR или комбинированной АТС, или для предоставления нашего собственного решения для хостинга.

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

Технологии, которые я рассматривал до сих пор (мы хотели бы использовать Java), - это Java Telephony API (JTAPI), JAIN-JCC (Java Call Control) API и другие.Основная суть этих API имеет для меня смысл, но чего я не могу собрать воедино, так это того, как именно приложение, которое я бы создал для управления вызовами и голосовой связи IVR / VXML, будет независимо от платформы взаимодействовать с телефонной системой.Как именно я могу получить звонок из телефонной системы?

Эти API и библиотеки, похоже, оставляют этот вопрос без ответа, что наводит меня на мысль, что независимое от платформы решение невозможно и что оно всегда будет зависеть от конкретной реализации.Есть также JAIN-SIP, если я смогу преобразовать все вызовы в SIP, то, возможно, я смогу создать таким образом универсальное приложение для управления вызовами / IVR.

Если я допустил здесь какое-либо невежество или недопонимание, пожалуйста, простите меня, я совершенно новичок в любых телекоммуникационных технологиях - кто-нибудь хочет разъяснить мне?Я был бы очень, очень благодарен, связи на уровне детальной реализации на данный момент очень, очень нечеткие, и иногда мне нужно немного подержаться за руку.Любая помощь или толчки в правильном направлении были бы полезны.

Всю последнюю неделю я изучал спецификации и API.:)

РЕДАКТИРОВАТЬ - Я забыл упомянуть, что мы предпочитаем разрабатывать это собственными силами, если это вообще возможно, и разумно с точки зрения затрат / выгод - на самом деле не хотим тратить деньги на интегрированную платформу, если это вообще возможно - это моя работа :)

Это было полезно?

Решение

Я работал на Озвучивание несколько лет назад:они создали (я использую прошедшее время здесь только потому, что я не знаю, что они делают сейчас, а не потому, что они больше этого не делают) движок VoiceXML, который:

  • Является ли Linux-боксом
  • Имеет сторонние механизмы преобразования речи в текст и преобразования текста в речь (путем взаимодействия с API-интерфейсами, специфичными для движка).
  • Интерпретирует VoiceXML (используя собственный анализатор VoiceXML) и выполняет его, управляя сторонними механизмами преобразования речи в текст и преобразования текста в речь

Они наняли меня для подключения их ящика к системам управления вызовами:и первой системой, для которой я это сделал, была Cisco (и наоборот, я вижу, что VoiceGenie теперь принадлежат Genesys).Их движок также поддерживал приложения без VoiceXML, напримерон предоставил доступ к интерфейсу приложения Java.

В заключение:

  • Различные телефонные системы имеют собственные API-интерфейсы управления вызовами;и/или они могут поддерживать стандартные протоколы управления вызовами (напримерSIP) и / или API (например,JTAPI, TAPI, CCXML) и, если они это делают, делают это более или менее хорошо.
  • Вы можете найти сторонние движки (напримерв Голосовая платформа Genesys, тот Сервер связи Microsoft Office, и другие), которые предоставляют вам некоторый унифицированный API, а также обрабатывают и поддерживают (или нет) взаимодействие с другими компонентами.

Я не менеджер по продуктам, системный инженер, сетевой архитектор, эксперт по предметной области в этой области.


НО все они, как правило, поддерживают несколько протоколов и API

Некоторые поддерживали только проприетарные, ad / или некоторые поддерживали один или несколько стандартов.

Итак, идея состоит в том, чтобы взаимодействовать с тем API или протоколом, который поддерживается чаще всего.

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

Будет ли это SIP?

SIP - это протокол, а не API.Этот материал находится в слоях, например, в качестве приложения, которое вы могли бы использовать:

  • Более низкий уровень:стек протоколов SIP с собственным API;вы используете этот API, понимаете, как выглядят SIP-диалоги, и общаетесь (только) с системами, которые понимают SIP

  • Более высокий уровень:движок VoiceXML / CCXML (или движок TAPI или JTAPI);вы пишете XML (или используете API TAPI и JTAPI);и движок (в зависимости от того, какой это движок) может иметь встроенный стек SIP, который он использует для взаимодействия с компонентами, использующими SIP, и / или у него могут быть другие стеки протоколов для компонентов, которые используют другие (не-SIP) протоколы.

У Cisco был только один (проприетарный) протокол, который я мог использовать, чтобы общаться с их "Интеллектуальным управлением контактами" (т.е.колл-центр) системы.И у Genesys, я думаю, был закрытый проприетарный API / протокол.

Если да, то будет ли мое решение для управления вызовами и IVR лучше всего реализовано как интерфейс SIP для приложения JTAPI или какой-либо другой вариант?

Я в замешательстве относительно того, что вы хотите сделать, где в стеке вы хотите быть (не то чтобы я мог сказать что-нибудь полезное, если бы знал).

Я думаю, что, возможно, вам следует поговорить с поставщиками:чтобы выяснить, что они могут для вас сделать (если только вы не пытаетесь сотрудничать с ними, что было бы непросто).

Можете ли вы сузить круг понятий "любая потенциальная АТС / IVR или комбинированная АТС"?

Другие советы

Я работаю в этом пространстве уже несколько лет.Ответ Крису очень хорош.Вот некоторая дополнительная информация, которая может быть полезна людям в подобных ситуациях.

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

Проблемы с интеграцией IVR / PBX проявляются несколькими способами:

Телефония:

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

  • Позвоните в службу информации о прибытии (ANI/DNIS).Предполагая, что вы работаете на более высоком уровне, таком как VoiceXML, у вас все равно могут возникнуть различные проблемы.Просто некоторые:
    • Наличие данных.Не все коммутаторы предоставляют эти данные.Что еще хуже, так это то, что данные могут быть доступны только при определенных конфигурациях коммутатора.Эта конфигурация может противоречить другим потребностям (передачам) вашего приложения или центра обработки вызовов.
    • Формат данных.В зависимости от вашего приложения это может быть проблемой, а может и не быть, но формат данных может немного отличаться от переключателя к переключателю.
  • Различные типы передачи.В зависимости от архитектуры окружающей телефонной сети может потребоваться изменить тип вашей передачи.Обычно при передаче агентам или ACD в местном центре обработки вызовов будет работать передача hook-flash по умолчанию, доступная в VoiceXML.Однако перенос за пределы площадки / с УАТС / с УАТС на УАТС необходимо выполнять как контролируемый (в 2 этапа) перенос.Обратите внимание, стандарт VoiceXML не распространяется на этот тип передачи.Это касается только слепых передач и конференций, но большинство платформ предоставляют mechansim для доступа к дополнительной логике передачи.

Интеграция компьютерной телефонии (CTI):

Под CTI я подразумеваю управление вызовами первой или третьей стороны посредством интеграции данных с АТС.

  • Особенности отличий.Больше, чем большинство может себе представить.Это может быть действительно сложно, если вы находитесь в колл-центре с ACD.Функции ACD могут быть очень разными у разных поставщиков.
  • Потоки событий / форматы данных.Опять же, они могут быть очень разными.На некоторых коммутаторах вы получите богатый набор событий.В некоторых средах вы практически ничего не видите.
  • Отслеживание звонков.Отслеживать вызов по коммутатору для передачи данных не всегда так просто, как получить идентификатор ссылки на вызов и вставить данные в базу данных, используя его в качестве ключа.На нескольких коммутаторах идентификаторы ссылок меняются по мере перемещения вызова по системе.Вам нужно будет написать программное обеспечение для отслеживания переходов и обновления его по внутреннему идентификатору ссылки.О, и не все коммутаторы поддерживают идентификаторы ссылок...

Таким образом, вы увидите не только различия между коммутаторами, но и различия между протоколами одного и того же коммутатора, различия в зависимости от класса обслуживания / конфигурации и даже для каждого устройства.Что касается более позднего варианта, я имею в виду, что вы можете увидеть различное поведение в зависимости от телефонного аппарата на столе агента (актуально для всплывающих окон данных CTI).

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

Итак, теперь, когда я обрисовал более крупные области проблемы (да, есть и другие :-( ), несколько советов:

  • Отделите логику вашего приложения от логики вашей телефонии.Предположим, вам понадобится несколько подключаемых модулей для интеграции с телефонией.
  • Избегайте переключения определенных функций рядом с вашим слоем нормализации.Вы не сможете избежать их при развертывании на настольных компьютерах агентов, поскольку колл-центры ожидают, что вы будете использовать или, по крайней мере, соблюдать их конкретную конфигурацию ACD (если ваши звонки неправильно отображаются в их отчетах, вы рискуете потерять клиента).
  • Выберите основного поставщика IVR, который поддерживает широкий спектр телефонных протоколов и предоставляет богатый расширенный набор функций передачи.
  • Пока стандарты...низки...это все, что у вас есть.Напишите свое приложение на языке VoiceXML.Будьте в состоянии сменить поставщиков IVR, если у вас есть сделка на коммутаторе или в колл-центре, которую основной поставщик не может поддержать.
  • Существует множество протоколов CTI.TAPI, JTAPI, TSAPI, CSTA и так далее.Здесь нет однозначного ответа.Существует пара коммерческих уровней нормализации, которые предоставляют вам более согласованный API, но потоки функций и событий по-прежнему различаются для каждого коммутатора.Либо планируйте писать на несколько интерфейсов, либо платите за сторонний API.Здесь нет простого ответа, поскольку стоимость продукта стороннего производителя может быть дорогостоящим дополнением, но усилия по разработке для внедрения широкого спектра коммутаторов могут быть еще больше.
  • Партнер с ограниченным набором поставщиков коммутаторов или серверов CTI (напримерCisco ICM, Genesys T-Сервер).Это ограничивает ваш рынок, но сводит к минимуму затраты на интеграцию.Но это партнерство может помочь вам увеличить объем продаж и получить доступ к большему количеству клиентов.

Также в качестве альтернативного ответа на мой вопрос мы наткнулись на проект с открытым исходным кодом, который создает интерфейс с использованием JTAPI для обеспечения поддержки нескольких телефонных систем (платы, мини-АТС и IP-телефония) и платформ.Таким образом, я могу разработать приложение, о котором я упоминал, и заставить его работать для многих различных систем, независимо от системы.Я уверен, что есть исключения, но предполагается, что это должно работать с большинством из них, учитывая, что TAPI в любом случае является своего рода общепринятым стандартом:

Это называется "Универсальный JTAPI":

http://gjtapi.sourceforge.net/

Сэкономьте себе немного времени на разработку с Твилио.В основном они имеют дело с подключением PSTN / VOIP, и вы просто говорите им, что делать с XML / HTTP REST.У них есть вспомогательные библиотеки на различных языках, включая Java.

Гораздо проще использовать web / RESTful API для разработки IVR.Существует несколько таких поставщиков API.

Твилио это самое популярное решение в США, а в последнее время также поддерживающее Великобританию.

Хойио подходит для азиатских стран, таких как Гонконг и Сингапур.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top