Реализовать очереди вызовов в адгезии

Мне нужно реализовать приведенный ниже вариант использования в звездочке + адгезии и не уверен, как это сделать

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

Любая идея о том, как реализовать этот поток?

1 ответ

Есть несколько способов реализовать это, ваш подход во многом зависит от того, как вы узнаете, доступен ли агент? Я бы порекомендовал это:

  • Звонок приходит
  • Маршрутизатор Adhearsion, направляет вызов контроллеру входящих вызовов
  • Это в связанном контроллере проверяет ваш список агентов
  • Если оператор доступен и не находится на вызове, вы можете использовать команду "dial" для вызова агента и автоматического объединения двух вызовов.
  • Если агент доступен и имеет активный вызов, вы можете использовать "присоединиться"
  • Если доступных агентов нет, используйте команду "play" для асинхронного воспроизведения некоторой музыки, пока вы продолжаете проверять, доступен ли агент.
  • Когда вы обнаружите, что агент доступен, вы можете "остановить" удерживаемую музыку и набрать вызов оператору.

Чтобы определить, какие операторы доступны, вам понадобится какой-то список операторов и их связанный статус, который вы обновляете, когда они принимают вызовы. В качестве альтернативы вы можете попробовать извлечь эту информацию непосредственно из файла asterisk extensions.conf или из БД, если вы используете PIAF.

Большинство примеров кода, которые вам нужно написать примерно так, приведены на веб-сайте Adhearsion. http://www.adhearsion.com/docs

Редактировать:

Лучшим способом достижения этого сейчас будет использование модуля очереди вызовов ElectricSlide. За последнее время было проделано много работы, и теперь это довольно солидная очередь вызовов.

https://github.com/adhearsion/electric_slide/


Другие вопросы по тегам