Wirtualny Agent¶
Moduł Wirtualnych Agentów (Ustawienia -> Usługi -> Integracje Chatbot/Voicebot) pozwala na konfigurację botów.
System Conpeek posiada obsługę rozmów z Botem (wirtualny agent) dla kanałów chat i voice. Integracja polega na wysłaniu żądania http na skonfigurowany adres URL w aplikacji WEB. W żądaniu określony jest tekst od klienta lub zdarzenie wychwycone przez system np. start rozmowy, cisza przez określony czas w rozmowie głosowej itd. Żądanie zawiera również informacje o kliencie między innymi identyfikatory rozmowy po stronie Conpeek, numer dzwoniącego i numer dodzwaniany, rekord ze sprawy w kampanii głosowej, zewnętrzny identyfikator połączenia jeśli połączenie zostało przekazane z innej centralki do Conpeeka, zmienne ustawione na stronie klienta np. w czasie przejścia przez IVR/IWRS. Żądanie z pakietem informacji jest wysyłane do serwera – odpowiedź może zawierać wiadomość do przekazania klientowi lub zestaw przycisków w chat itd. Odpowiedź może też nie zawierać tekstu, wtedy system wie że ma nasłuchiwać dalej. Rozmowa z wirtualnym agentem kończy się gdy klient się rozłączy lub NLP zwróci informację o zakończeniu konwersacji z botem. Jeżeli dojdzie do niespodziewanego zakończenia konwersacji NLP otrzyma żądanie z informacją, że rozmowa została zakończona.
Opis techniczny integracji z RASA¶
Konwersacja klienta z botem zaczyna się od wysłania HTTP POST na wskazany adres URL w wirtualnym agencie.
HTTP POST
{
"sender": <UUID>,
"text": <STRING>,
"metadata": {
"leg_uuid": <STRING>,
"dialog_uuid": <STRING>,
"bot_dialog_uuid": <STRING>,
"session_variables": {},
"local_variables": {},
"confidence": <FLOAT>,,
"caller_contact_address": <STRING>,
"callee_contact_address": <STRING>,
"start_talking_date": <STRING>,
"stop_talking_date": <STRING>,
"start_playback_date": <STRING>,
"stop_playback_date": <STRING>,
"machine_detected": <INT>,
"machine_detected_type": <STRING>,
"operator_call_id": <STRING>,
"voice_campaign_request": {
"voice_campaign_name": <STRING>,
"project_id": <INT>,
"project_name": <STRING>,
"case_id": <STRING>,
"case_group": <STRING>,
"case_state": <STRING>,
"crm_id": <STRING>,
"contact_id": <STRING>,
"custom_fields": {},
"made_calls": <INT>,
"served_calls": <INT>,
"machine_detected_calls": <INT>,
},
},
}
Nazwa | Rodzaj | Przykład | Opis |
---|---|---|---|
sender | <STRING> |
52499372-6c0f-45ea-a310-8c0b902e1d8c | Id sesji/konwersacji z botem |
text | <STRING> |
Dzwonię w sprawie reklamacji | Wiadomość/wypowiedź klienta lub zdarzenie |
metadata | Zawiera dodatkowe informacje przydatne w procesowaniu NLU | ||
leg_uuid | 02117c4d-3bc4-42c5-9810-b97cb1d8da83 | Id lega w rozmowie audio/video | |
dialog_uuid | 80f6815d-d143-4f6f-b6c1-9837c3ee2a00 | Id dialogu/strony w rozmowie audio/video/chat | |
bot_dialog_uuid | c02e5a03-e6cb-47bd-ac26-6fde7a857fb9 | Id dialogu/strony wirtualnego agenta w rozmowie audio/video/chat | |
session_variables | {"client_verified": true} | Obiekt ze zmiennymi ustawionymi na dialogu klienta | |
local_variables | {"xyz": 123} | Obiekt ze zmiennymi ustawionymi na dialogu wirtualnego agenta w ramach konwersacji | |
confidence | 0.9 | Pewność zamiany mowy na tekst z ASR | |
caller_contact_address | 48123456789 | Numer/identyfikator strony dzwoniącej | |
callee_contact_address | 48987654321 | Numer/identyfikator strony dodzwanianej | |
start_talking_date | 2022-01-01 10:00:00 | Data rozpoczęcia ostatniego zdania przez klienta | |
stop_talking_date | 2022-01-01 10:00:10 | Data zakończenia ostatniego zdania przez klienta | |
start_playback_date | 2022-01-01 10:00:00 | Data rozpoczęcia odgrywania ostatniego komunikatu klientowi | |
stop_playback_date | 2022-01-01 10:00:10 | Data zakończenia odgrywania ostatniego komunikatu klientowi | |
machine_detected | 0 | Czy wykryto maszynę dla połączenia z kampanii głosowej | |
machine_detected_type | AMD | W jaki sposób wykryto maszynę | |
operator_call_id | c7b0e197-e71a-47ea-aa94-d57a99a444bd | Identyfikator połączenia z zewnętrznej centrali telefonicznej | |
voice_campaign_request | Informacje na temat sprawy z kampanii głosowej | ||
voice_campaign_request.custom_fields | Sprawa może zawierać dodatkowe dowolne pola. Pola może ustawiać NLU |
Pole "text" może zawierać nazwy zdarzeń:
- __PEER_CONNECTED__ - rozpoczęcie konwersacji
- __PEER_DISCONNECTED__ - rozłączenie od strony klienta lub przez system. Nie jest wysyłane jeśli NLP kończy konwersacje.
- __NO_UTTERANCE__ - brak wypowiedzi klienta w określonym czasie.
- __LOW_CONFIDENCE__ - niska pewność zamiany mowy na tekst. Tekst z ASR jest przesyłany w "metadata" w polu "text".
- __TOO_LONG_SENTENCE__ - zbyt długa wypowiedź klienta dla integracji DialogFlow ES.
Pole "machine_detected_type" może zawierać:
- AMD - kiedy wykryto maszynę poprzez AMD
- MANUAL - kiedy wykryto maszynę ręcznie
Przykładowe odpowiedzi z NLU na żądanie HTTP POST:
{
"text": <STRING>,
"ssml": <STRING>,
"end_of_conversation": <BOOLEAN>,
"typing_delay": <INT>, - milisekundy
}
[
{
"custom": {
"blocks": [
{
"text": <STRING>,
"ssml": <STRING>,
"typing_delay": <INT>, - milisekundy
"duplex_enabled": <INT>,
"duplex_delay_ms": <INT>,
"stt_integration_name": <STRING>,
"sentence_time_max": <INT>,
"min_talking_time_to_interrupt": <INT>,
"min_confidence_level": <FLOAT>,
"sentence_end_silence_time": <INT>,
"speech_recognition_language": <STRING>,
"voice": <STRING>,
"speaking_rate": <FLOAT>,
"pitch": <FLOAT>,
"volume": <FLOAT>,
"voice_definition_id": <STRING>,
"voice_definition_name": <STRING>,
"sentence_start_timeout": <INT>,
"speech_contexts": <STRING>,
"dtmf_timeout": <INT>,
"text_conditional_actions": <STRING>,
"buttons": [
{
"title": <STRING>, etykieta przycisku
"payload": <STRING>, wartość wysłana do NLU po kliknięciu przycisku
},
{
"title": <STRING>,
"payload": <STRING>,
}
],
"file_url": <STRING>,
"image_url": <STRING>,
"variables": {
"var1": "val2", ustawienie zmiannych na połączeniu, dostępne później w Webhooku i API
},
"post_message_notification": {
"var1": "val2", dowolny obiekt który zostanie przekazany do strony nadrzędnej z iframe z pluginem poprzez funkcję postMessage()
},
}
},
],
"end_of_conversation": <BOOLEAN>, lub jak poniżej
"end_of_conversation": {
"export": {
"var1": "val2", ustawienie zmiannych na aplikacji BOT, wynik ten można zwrócić do IVR
},
"voice_campaign_actions": {
"set_custom_fields": {},
"set_case_state": <STRING>,
"set_priority": <INT>,
"execute_trigger": <STRING>,
"set_recall": <STRING>, np. 2022-01-01 10:00:00
"set_dialing_method": <STRING>,
"set_application_state": <STRING>,
"set_mode": <STRING>,
"transfer_call": {
"type": CURRENT_PROJECT_WITH_CASE|PROJECT|EXTERNAL,
"tenant_user_id": <INT>,
"tenant_user_name": <STRING>,
"project_id": <INT>, tylko dla typu PROJECT
"project_name": <STRING>, tylko dla typu PROJECT
"number": <STRING>, tylko dla typu EXTERNAL
"required_skill": <STRING>, tylko dla typu CURRENT_PROJECT_WITH_CASE|PROJECT
},
}
}
}
},
]
[] - pusta odpowiedź spowoduje kontynuację nasłuchiwania strony klienta