В случае с потоком мы начнем с настройки сценариев событий на виджете «Начать». Ниже мы увидим, что для виджета «Начать» настроены два сценария событий.
Чтобы создать код сценария события, добавьте новый сценарий события в виджет «Начать». Затем код можно написать прямо в редакторе потока, как показано ниже.
И в событиях Engagement Accepted, и в Disposition Saved используется похожий код. Оба они представляют собой простые блоки кода на Javascript, которые используют встроенную функцию HTTP для создания исходящего HTTPS POST-запроса.
Код сценария события «Взаимодействие принято»
В этом примере кода мы включаем идентификатор взаимодействия, номер телефона вызывающего абонента, электронную почту оператора и название очереди. Этот код будет выполнен, когда оператор ответит на вызов и начнет разговор с клиентом. На этом примере мы видим, что минимального количества информации достаточно для создания всплывающего окна или для начала регистрации нового вызова. Стоит отметить, что если ваша конфигурация потоков ZCC собирает данные о вызывающем абоненте в потоке/IVR, такие как номер счета, номер дела или заявки и т. д., то для включения дополнительных данных в этот HTTP-запрос достаточно просто добавить переменные в переменную request_body.
async function main () { try { let request_body = { "engagementId": var_get()["global_system.Engagement.engagementId"], "caller_number": var_get()["global_system.Engagement.ANI"], "agent_email": var_get()["global_system.Agent.email"], "queue_name": var_get()["global_system.Engagement.queue"] } const result = await req.post('https://api.example.com/acceptedcall', request_body); let jsonResponseBody = result.data; log.debug("Axios jsonResponseBody=" + JSON.stringify(jsonResponseBody)); } catch (error) { log.debug("Received HTTP error " + error); }}
Код сценария события «Размещение сохранено»
Для события «Размещение сохранено» мы повторим код, использованный в предыдущем примере, с добавлением переменной disposition в строке 9. Этот блок кода будет выполнен, когда оператор выберет размещение вызова. Это станет последним действием, выполняемым оператором в процессе взаимодействия. Отправив этот запрос, внешняя система сможет отследить, что оператор завершил задание. Как и в вышеупомянутом событии «Взаимодействие принято», можно включить дополнительные переменные с учетом вашего случая использования.
async function main () { try { let request_body = { "engagementId": var_get()["global_system.Engagement.engagementId"], "caller_number": var_get()["global_system.Engagement.ANI"], "agent_email": var_get()["global_system.Agent.email"], "queue_name": var_get()["global_system.Engagement.queue"], "disposition_name": var_get()["global_system.Engagement.disposition"] } const result = await req.post('https://api.example.com/dispositionedcall', request_body); let jsonResponseBody = result.data; log.debug("Axios jsonResponseBody=" + JSON.stringify(jsonResponseBody)); } catch (error) { log.debug("Received HTTP error " + error); }}
В зависимости от принятого решения, вы можете счесть приведенные выше сценарии события достаточными или же вам могут понадобиться события API Zoom App Marketplace, чтобы охватить все необходимые случаи использования вашей интеграции. Например, вы можете дополнить два описанных выше потоковых события, подписавшись на события API Zoom App Marketplace для событий удержания, возобновления, выключения или включения звука. Такие дополнительные события представят приложению информацию о том, как часто операторы переводят вызовы в режим ожидания или выключения звука.
Оба описанных выше сценария потокового события и события веб-перехватчика или веб-сокета Zoom App Marketplace доступны для вашего решения.