Я пытаюсь немного поиграть с ARI, чтобы создать очередь, способную обслуживать несколько экземпляров asterisk. После некоторой базовой документации кажется, что ARI — это способ сделать это.
Чего я уже добился, так это простого плана нумерации, который отправляет входящий вызов в мое стазисное приложение. Как только вызов перешел в стазис, запускается событие STASIS_START, и я считаю это точкой входа в мою очередь (это моя первая проблема). После того, как звонок был получен, я помещаю некоторые записи в базу данных H2 и начинаю проигрывать мох на этом канале.
Просто для демонстрации я сразу же пытаюсь создать другой канал для свободного агента, чтобы обработать вызов.
Проблема в том, что когда я создаю канал, я должен установить приложение, и если я установлю то же приложение, я получу новое событие STASIS_START (еще одна запись в базе данных H2, что нежелательно), но в этом случае это подделка, так как я считал, что STASIS_START должен срабатывать только тогда, когда в мою «очередь» поступает новый вызов. Я думал поместить некоторые переменные в «истинные внешние вызовы», которые входят в стазис-приложение, а затем проверить, есть ли эти переменные в поступивших вызовах ... но я боюсь, что делаю что-то не так, возможно, с архитектурной точки зрения. .
Каков наилучший подход здесь?
Еще два бонусных вопроса:
Зачем мне использовать мост для воспроизведения MOH для ожидающего абонента, когда я могу воспроизводить MoH прямо на этом канале? Это потому, что мост дал мне возможность записывать или захватывать события DTMF?
Верно ли мое предположение, что когда I
m trying to call for queue agents (in order to match these with the waiting call in the queue) I should use
POST /channels/createcombined with
POST /channels/{channelId}/dialinstead of using
POST /channels` будет использовать originate?