Rozhodovací stromy¶
Rozhodovací stromy jsou vestavěný chatbot Daktely: provedou zákazníka předdefinovanými otázkami a odpověďmi, umí si vyžádat data z externích API a vytvářet tickety — to vše před spojením zákazníka s operátorem (nebo místo něj).
Rozhodovací stromy jsou dostupné pro webchat, Facebook Messenger, Instagram DM, SMS, Viber a WhatsApp a nastavují se pro každý kanál zvlášť.
Warning
Rozhodovací stromy pro Facebook Messenger, Viber a WhatsApp jsou aktuálně ve fázi Beta.
Rozhodovací stromy si nastavíte pod Spravovat → Směrování → váš kanál → Rozhodovací stromy (např. Spravovat → Směrování → Web chaty → Rozhodovací stromy). Zobrazí se přehled vašich rozhodovacích stromů.
Chcete-li zobrazit diagram rozhodovacího stromu, klikněte na šedé tlačítko Strom ve sloupci Akce.
Chcete-li rozhodovací strom upravit, klikněte na jeho Název. Chcete-li vytvořit nový rozhodovací strom, klikněte na Přidat nový. Otevře se editor rozhodovacího stromu.
Warning
Když upravíte stávající nebo vytvoříte nový rozhodovací strom, klikněte na Uložit a po návratu na přehled rozhodovacích stromů klikněte na tlačítko Aplikovat změny konfigurace v pravém horním rohu.

U webchatů se změny na vašem webu projeví až po několika minutách. Pokud chcete nová nastavení vidět ihned, otevřete web v novém okně v anonymním režimu.
Editor rozhodovacího stromu¶
Editor rozhodovacího stromu zobrazuje diagram jednotlivých rozhodnutí. Když vytváříte nový rozhodovací strom, uvidíte pouze první krok, „Welcome message“. Chcete-li upravit rozhodnutí, vyberte ho kliknutím a poté klikněte na tlačítko upravit v pravé části obrazovky:

Otevře se detail rozhodnutí.
Zadejte Název a Popis (nepovinný) v hlavičce a pak nastavte rozhodnutí. Můžete používat všechny dostupné objekty – doporučujeme projít také dokumentaci templatovacího jazyka.
Přetáhněte položky z Actions, Groups a Targets do rozhodnutí. Doporučujeme u každé položky vyplnit Popis pro lepší orientaci.
Actions¶
| Akce | Popis |
|---|---|
| Request | Odeslat dotaz na data z URL. Vyplňte URL adresu, kde jsou vaše data uložena, a pojmenujte objekt, který bude obsahovat přijatá data, abyste je mohli zobrazit v konverzaci. |
| Send message | Poslat v konverzaci zprávu. Zadejte výchozí zprávu, případně překlady do dalších jazyků – u webchatu je jazyk zákazníka určen nastavením jazyka v konektoru, u ostatních kanálů se detekuje automaticky. |
| Save data | Uložit vlastní data pro pozdější použití. Data zadejte do pole Hodnota a do pole Název klíče zadejte klíč, pod kterým data načtete. Např.: Hodnota: 097HNOU93RNidhfsJ77 Název klíče: accessToken Chcete-li data použít ve zprávě nebo dotazu, jednoduše zadejte: {{nazevklice}} v tomto příkladu: {{accessToken}} |
| Create ticket | Zadejte Název ticketu, jeho Kategorii a Komentář. |
Groups¶
| Typ | Popis |
|---|---|
| Condition | Nastavte podmíněné akce. Nejdříve nastavte parametry podmínky, klikněte na Hotovo a pak přetáhněte další akce do polí v podmínce. |
| Loop | Projít položky pole. Pokud použijete akci Target, Loop skončí. |
Targets¶
Target
-
Další cíl: zvolte, zda je cílem další rozhodnutí ve stromu (Rozhodnutí), nebo koncový cíl jako např. fronta nebo časová podmínka (Aplikace).
Pokud jste vybrali:
- Rozhodnutí – zvolte rozhodnutí z rozbalovacího seznamu nebo, chcete-li vytvořit nové rozhodnutí, klikněte na modré tlačítko plus. Zadejte název nového rozhodnutí. Nové rozhodnutí můžete upravit poté, co dokončíte úpravy současného a vrátíte se zpět do editoru rozhodovacího stromu.
- Aplikace – zvolte typ cíle (Automatické zprávy, Přerušit, Rozhodovací strom, Fronta, Časová podmínka) a cíl. Dostupné typy cílů se mohou u jednotlivých kanálů lišit.
-
Provést: zvolte, zda na další cíl pokračovat, jakmile se zákazník dostane k danému rozhodnutí (Ihned), nebo až po jeho interakci (Po interakci klienta).
Pokud jste vybrali Po interakci klienta, dále zvolte Typ odpovědi:
- Tlačítko (webchat, WhatsApp a Facebook Messenger): zákazník odpoví na otázky bota pomocí tlačítek. Text tlačítka zadejte do pole níže.
- Generovaná tlačítka (webchat, WhatsApp a Facebook Messenger): tlačítka se vygenerují z externího zdroje.
- Vzor: zákazník svou odpověď napíše. Zadejte vzor ohraničený lomítky, kterému musí odpověď zákazníka odpovídat, aby byla vyvolána akce. Např. vzoru /[0-9]{6}/ bude odpověď odpovídat, pokud zákazník zadá alespoň šestimístné číslo. Více informací o vzorech viz Základní syntaxe regulárních výrazů.
- Similar: zákazník svou odpověď napíše. Zadejte seznam slov, která tuto akci vyvolají, oddělených čárkou.
Warning
Pokud použijete Similar nebo Vzor jako jednu z možností odpovědi, u každé odpovědi se zobrazí přepínač Výchozí odpověď. Zaškrtněte tu odpověď, jejíž akce se má vyvolat, pokud odpověď zákazníka nebude odpovídat žádnému slovu ani vzoru.
Jazykové varianty můžete nastavit u všech kombinací kromě Rozhodnutí-Ihned a Rozhodnutí-Po interakci klienta-Generovaná tlačítka.
Chcete-li nastavit více cílů závislých na odpovědi zákazníka, přidejte další Target.
Tip
Praktické příklady použití jednotlivých možností rozhodovacích stromů najdete v Příkladu rozhodovacího stromu níže.
Příklad rozhodovacího stromu¶
Zde je uveden příklad rozhodovacího stromu, ve kterém může zákazník požádat o kalkulaci dovolené nebo zjistit stav požadavku a případně do něj přidat další informace. Je vytvořen webchatový konektor s povinnými vstupy Jméno a Email a s rozhodovacím stromem nastaveným jako Další cíl.
Rozhodovací strom si můžete vyzkoušet v praxi na adrese https://miktest.daktela.com/demo/DT.html.
Přehled rozhodovacího stromu:

Welcome message
V prvním rozhodnutí se zákazník rozhodne, kterou větví stromu se bude pohybovat. Může kliknout na jedno ze dvou tlačítek nastavených v cílech.
| Krok | Nastavení |
|---|---|
| Odeslat zprávu | Dobrý den, máte u nás už rezervovanou dovolenou, nebo chcete novou kalkulaci? |
| Cíl | Přejít na rozhodnutí: New holiday Provést: Po interakci klienta Typ odpovědi: Tlačítko Odpověď: Nová kalkulace |
| Cíl | Přejít na rozhodnutí: I have a booking Provést: Po interakci klienta Typ odpovědi: Tlačítko Odpověď: Mám rezervaci |
New holiday
V tomto rozhodnutí uložíme webchatovou interakci a accessToken uživatele a data použijeme v URL dotazu. Název interakce je zákazníkovo jméno, které vyplnil před zahájením webchatu. Vezmeme ho z odpovědi dotazu a použijeme ho ve zprávě. Veškeré dostupné atributy naleznete v API dokumentaci.
| Krok | Nastavení | Komentář |
|---|---|---|
| Uložit data | Hodnota: {{lastMessage.interaction}} Název klíče: chatName | Ukládáme {{lastMessage.interaction}}, což je unikátní jméno interakce v Daktele, např. web_608144b8b7c1f169851283. Nastavíme název klíče chatName, který nám umožní interakci poté použít jinde. |
| Uložit data | Hodnota: aaa111bbb222 Název klíče: accessToken | Ukládáme access token uživatele. To nám ulehčí jeho zadávání v dalších krocích. Uživatelův accessToken naleznete ve Spravovat → Uživatelé → Seznam uživatelů → detail uživatele. |
| Dotaz | URL adresa: https://miktest.daktela.com/api/v6/activitiesWeb/ {{chatName}}.json?accessToken={{accessToken}} Objekt: interaction_response |
Posíláme dotaz na informace o webchatové interakci dostupné na api/v6/activitiesWeb/. {{chatName}} a {{accessToken}} budou nahrazeny hodnotami uloženými v předchozích dvou krocích, takže dotaz bude vypadat takto: https://miktest.daktela.com/api/v6/activitiesWeb/ web_608144b8b7c1f169851283.json?accessToken=aaa111bbb222 Odpověď jsme nazvali interaction_response. Použijeme ji v dalším kroku. |
| Odeslat zprávu | Dobrá, {{interaction_response.result.title}}, kam chcete jet? | Název interakce je zákazníkovo jméno, které vyplnil před zahájením webchatu. Díky načtení z odpovědi na dotaz můžeme odeslat personalizovanou zprávu. |
| Dotaz | URL adresa: https://miktest.daktela.com/api/v6/formFields/destination_option.json?accessToken={{accessToken}} Objekt: destination_list |
Posíláme dotaz na seznam možností selectboxu ve vlastním poli „Destination options“ dostupném na api/v6/formFields/. Tato pole lze nastavit ve Spravovat → Tickety → Kategorie → Formulář. Odpověď obsahuje seznam destinací, které se v rámci webchatu budou zákazníkům nabízet. Odpověď jsme nazvali destination_list. Použijeme ji v dalším kroku pro vygenerování tlačítek. |
| Cíl | Přejít na rozhodnutí: Create new ticket Provést: Po interakci klienta Typ odpovědi: Generovaná tlačítka Zdroj: {{destination_list.result.items}} Hodnota / Název:{{item.title}} / {{item.title}} | Zákazník si kliknutím na tlačítko vybere destinaci dovolené. Tlačítka se generují automaticky ze seznamu možností selectboxu z odpovědi z předešlého kroku. Každá destinace je item a v proměnných lze používat jeho vlastnosti. Část Hodnota v poli Hodnota / Název určuje, co rozhodovací strom odešle jako zprávu webchatu, když na tlačítko zákazník klikne. Část Název určuje text tlačítka. V tomto případě jsou obě proměnné stejné a obsahují pouze názvy destinací: Egypt, Morocco, Tunisia. |
Create new ticket
V tomto rozhodnutí použijeme zákazníkovu volbu z minulého rozhodnutí k vytvoření nového ticketu.
| Krok | Nastavení | Komentář |
|---|---|---|
| Dotaz | URL adresa: (adresa je zde rozdělena na více řádků, ale zadává se samozřejmě vcelku) https://miktest.daktela.com/api/v6/tickets.json? accessToken={{accessToken}}& title={{interaction_response.result.title}}+–+Dovolená+v+{{lastMessage.text}}& category=categories_6080569f6fc48365002493& priority=LOW& stage=OPEN& customFields[destination_option]={{lastMessage.text}}& customFields[email]={{interaction_response.result.email}}& comment=Customer:+{{interaction_response.result.title}}+Destination:+ {{lastMessage.text}}.+Contact:+{{interaction_response.result.email}}.& _method=POST Objekt: new_ticket |
Používáme metodu POST (na konci dotazu), takže budeme vytvářet nový záznam v seznamu ticketů dostupných na api/v6/tickets.json. - Použijeme access token uložený v New holiday výše. - Název ticketu bude „jméno zákazníka“ – Dovolená v „vybraná destinace“. Obě proměnné se vezmou z New holiday výše. - Kategorii ticketu nastavíme posláním jejího unikátního názvu (povinné pole). - Prioritu ticketu nastavíme na nízkou (povinné pole). - Text předchozí zprávy – vybraná destinace – zapíšeme do vlastního pole Destination. - Emailovou adresu, kterou zákazník zadal a kterou načteme z objektu interaction_response z rozhodnutí New holiday výše, zapíšeme do vlastního pole Email. - V ticketu vytvoříme komentář s použitím dat z předchozí zprávy a z objektu interaction_response. - Objekt: odpověď jsme nazvali new_ticket. Použijeme ji v dalším kroku. |
| Odeslat zprávu | Dobrá volba {{interaction_response.result.title}}! Hned se do toho pustíme a budeme Vás kontaktovat. Informace o Vašem požadavku: Číslo rezervace: {{new_ticket.result.name}}. Destinace: {{new_ticket.result.customFields.destination_option[0]}}. Stav: {{new_ticket.result.stage}}. Poslední změna: {{new_ticket.result.edited}}. | Odešleme zprávu, která shrne ticket vytvořený v minulém kroku. Data vezmeme z odpovědi new_ticket. |
| Cíl | Další cíl: Přerušit Provést: Ihned | Když zákazník dostane zprávu, chat se ukončí. Konečný cíl rozhodovacího stromu můžete samozřejmě upravit dle potřeby. |
I have a booking
Když zákazník v prvním rozhodnutí vybere Mám rezervaci, přejde sem.
| Krok | Nastavení | Komentář |
|---|---|---|
| Uložit data | Hodnota: {{lastMessage.interaction}} Název klíče:chatName | Ukládáme {{lastMessage.interaction}}, což je unikátní jméno interakce v Daktele, např. web_608144b8b7c1f169851283. Nastavíme název klíče chatName, který nám umožní interakci poté použít jinde. |
| Uložit data | Hodnota: aaa111bbb222 Název klíče:accessToken | Ukládáme access token uživatele. To nám ulehčí jeho zadávání v dalších krocích. Uživatelův accessToken naleznete ve Spravovat → Uživatelé → Seznam uživatelů → detail uživatele. |
| Dotaz | URL adresa: https://miktest.daktela.com/api/v6/activitiesWeb/ {{chatName}}.json?accessToken={{accessToken}} Objekt: interaction_response |
Posíláme dotaz na informace o webchatové interakci dostupné na api/v6/activitiesWeb/. {{chatName}} a {{accessToken}} budou nahrazeny hodnotami uloženými v předchozích dvou krocích, takže dotaz bude vypadat takto: https://miktest.daktela.com/api/v6/activitiesWeb/ web_608144b8b7c1f169851283.json?accessToken=aaa111bbb222 Odpověď jsme nazvali interaction_response. Použijeme ji v dalším kroku. |
| Odeslat zprávu | Dobrá, {{interaction_response.result.title}}, zadejte prosím číslo Vaší rezervace. | Název interakce je zákazníkovo jméno, které vyplnil před zahájením webchatu. Díky načtení z odpovědi na dotaz můžeme odeslat personalizovanou zprávu. |
| Cíl | Přejít na rozhodnutí: Ticket Provést: Po interakci klienta Typ odpovědi: Vzor Odpověď: /[0-9]/ | Pokud zákazník zadá sadu číslic, přejde na tento cíl. Více informací o tom, jak zadávat vzory, naleznete v Základech syntaxe regulárních výrazů. |
| Cíl | Přejít na rozhodnutí: invalid Provést: Po interakci klienta Typ odpovědi: Vzor Odpověď: /.$/* | Pokud zákazník zadá cokoli kromě čísel, přejde sem. Více informací o tom, jak zadávat vzory, naleznete v Základech syntaxe regulárních výrazů. Zákazník poté dostane zprávu, že jeho rezervace neexistuje, a vrátí se na začátek chatu. |
Ticket
V tomto rozhodnutí se pokusíme nalézt ticket dle čísla rezervace, které zákazník zadal v minulém rozhodnutí, a pokud se to podaří, vypíšeme detaily ticketu.
| Krok | Nastavení | Komentář |
|---|---|---|
| Uložit data | Hodnota: {{lastMessage.text}} Název klíče: ticketName | Uložíme číslo, které zákazník zadal v předchozím rozhodnutí, a pojmenujeme ho ticketName. |
| Dotaz | URL adresa: https://miktest.daktela.com/api/v6/tickets/ {{ticketName}}.json?accessToken={{accessToken}} Objekt:check_ticket |
Pošleme dotaz na informace o ticketu dostupné na api/v6/tickets/. {{ticketName}} je číslo zadané zákazníkem a uložené v předchozím kroku. Objekt: odpověď jsme nazvali check_ticket. Použijeme ji v dalším kroku. |
| Podmínka | Pokud {{check_ticket.result}} ISNOTNULL: - Odeslat zprávu 1 - Odeslat zprávu 2 - Cíl 1 - Cíl 2 Jinak: - Odeslat zprávu 3 - Cíl 3 | Pokud odpověď na dotaz z předchozího kroku obsahuje data, odešlou se 2 zprávy a vytvoří 2 cíle. V opačném případě se odešle jiná zpráva a vytvoří jiný cíl. Viz kroky níže. |
| Odeslat zprávu 1 | Číslo rezervace: {{check_ticket.result.name}}. Destinace: {{check_ticket.result.customFields.destination_option[0]}}. Stav: {{check_ticket.result.stage}}. Poslední změna: {{check_ticket.result.edited}}. Uživatel: {{check_ticket.result.user.title}}. Další požadavky: {{check_ticket.result.customFields.additional_requests[0]}}. | Když je ticket nalezen, odešle se o něm zpráva obsahující data z odpovědi check_ticket. |
| Odeslat zprávu 2 | Chcete k požadavku něco přidat? | |
| Cíl 1 | Přejít na rozhodnutí: Add request Provést: Po interakci klienta Typ odpovědi: Tlačítko Odpověď: Ano | Zákazník přejde na další rozhodnutí. |
| Cíl 2 | Další cíl: Přerušit Provést: Po interakci klienta Typ odpovědi: Tlačítko Odpověď: Ne | Chat se ukončí. |
| Odeslat zprávu 3 | Tuto rezervaci se nám bohužel nepodařilo nalézt. | Tato zpráva se odešle, když zadaný ticket není nalezen. |
| Cíl 3 | Přejít na rozhodnutí: I have a booking Provést: Ihned | Zákazník znovu přejde na rozhodnutí I have a booking, kde může číslo rezervace zadat znovu. |
Add request
V tomto rozhodnutí může zákazník zadat, co chce k požadavku přidat.
| Krok | Nastavení | Komentář |
|---|---|---|
| Odeslat zprávu | Co chcete k rezervaci přidat? | |
| Cíl | Přejít na rozhodnutí: Add to ticket Provést: Po interakci klienta Typ odpovědi: Vzor Odpověď: /.$/* | Když zákazník odešle jakoukoli zprávu, přejde na další rozhodnutí. |
Add to ticket
V tomto rozhodnutí se zákazníkův další požadavek přidá k jeho případným předchozím požadavkům.
| Krok | Nastavení | Komentář |
|---|---|---|
| Dotaz | URL adresa: https://miktest.daktela.com/api/v6/tickets/{{ticketName}}.json? accessToken={{accessToken}}& customFields[additional_requests]= {{check_ticket.result.customFields.additional_requests[0]}}+ {{lastMessage.text}}&_method=PUT Objekt: update_ticket |
Aktualizujeme ticket dostupný na api/v6/tickets/ pomocí metody PUT (na konci dotazu). Pokud v ticketu již byla nějaká data v poli Additional requests, nechceme je přepsat. Proto nejdříve do tohoto pole zadáme data, která tam již byla v odpovědi check_ticket v rozhodnutí Ticket – {{check_ticket.result.customFields.additional_requests[0]}}. Poté zadáme text předchozí zprávy s dalším požadavkem – {{lastMessage.text}}. Objekt: odpověď jsme nazvali update_ticket. Použijeme ji v dalším kroku. |
| Odeslat zprávu | Číslo ticketu: {{update_ticket.result.name}}. Destinace: {{update_ticket.result.customFields.destination_option[0]}}. Další požadavky: {{update_ticket.result.customFields.additional_requests[0]}} Stav: {{update_ticket.result.stage}}. Poslední změna: {{update_ticket.result.edited}}. Uživatel: {{update_ticket.result.user.title}}. | Zákazníkovi opět pošleme shrnutí ticketu s daty obdrženými v odpovědi update_ticket. |
| Cíl | Další cíl: Přerušit Provést: Ihned | Chat je ukončen. |