W Przepływie zaczynamy od skonfigurowania skryptów zdarzeń na widżecie Start. Poniżej widzimy, że widżet Start ma skonfigurowane dwa skrypty zdarzeń.
Aby utworzyć kod skryptu zdarzenia, należy dodać nowy skrypt zdarzenia do widżetu Start, a następnie kod można zapisać bezpośrednio w edytorze przepływu, jak pokazano poniżej.
Zarówno zdarzenia Engagement Accepted, jak i Disposition Saved wykorzystują podobny kod. Oba są prostymi blokami kodu Javascript, które wykorzystują wbudowaną funkcję HTTP do generowania wychodzącego żądania HTTPS POST.
Kod skryptu zdarzenia Interakcja zaakceptowana
W tym przykładzie kodu uwzględniamy identyfikator interakcji, numer telefonu dzwoniącego, adres e-mail agenta i nazwę kolejki. Kod ten zostanie wykonany, gdy agent odbierze połączenie i rozpocznie rozmowę z klientem. Jest to przykład minimalnej ilości informacji wymaganych do wygenerowania wyskakującego okna lub rozpoczęcia rejestrowania nowego połączenia. Warto wspomnieć, że jeśli konfiguracja Przepływu ZCC zbiera dane o dzwoniącym w Przepływie/IVR, takie jak numer konta, numer sprawy/zgłoszenia itp., wystarczy dodać dodatkowe zmienne do zmiennej request_body, aby uwzględnić dodatkowe dane w tym żądaniu HTTP.
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); }}
Kod skryptu zdarzenia Dyspozycja zapisana
W przypadku zdarzenia Dyspozycja zapisana ponownie wykorzystamy kod użyty w poprzednim przykładzie, z dodatkiem zmiennej „disposition” dodanej w wierszu 9. Ten blok kodu zostanie wykonany, gdy agent wybierze dyspozycję dla połączenia, co dzieje się jako ostatnia czynność wykonywana przez agenta w ramach interakcji. Wysyłając to żądanie, system zewnętrzny może śledzić, że agent zakończył dyspozycję interakcji. Podobnie jak w przypadku zdarzenia Interakcja zaakceptowana, w zależności od przypadku użycia można uwzględnić dodatkowe zmienne.
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); }}
W zależności od posiadanego rozwiązania, może okazać się, że powyższe skrypty zdarzeń w zakresie Przepływu są wystarczające lub możesz potrzebować niektórych zdarzeń w zakresie Zoom App Marketplace API, aby pokryć wszystkie wymagane przypadki użycia integracji. Na przykład, możesz uzupełnić dwa powyższe zdarzenia w zakresie Przepływu, subskrybując zdarzenia w zakresie Zoom App Marketplace API dla wstrzymania/wznowienia/wyciszenia/wyłączenia wyciszenia. Te dodatkowe zdarzenia zapewnią aplikacji wgląd w częstotliwość, z jaką agenci zawieszają lub wyciszają połączenia.
Zarówno powyższe skrypty zdarzeń w zakresie przepływu, jak i zdarzenia w zakresie Zoom App Marketplace Webhook/Websocket są dostępne dla Twojego rozwiązania.