Commit 9a06e399 by Полина Бел

правки из боевой версии: добавлены интенты, фразы, дигрессии (не подключены в олл дсл)

1 parent 80e2c1c5
library
digression call_operator
{
conditions { on #messageHasAnyIntent(digression.call_operator.triggers); }
var retriesLimit = 2;
var counter = 0;
var resetOnRecognized=false;
var triggers = ["call_operator"];
var responses: Phrases[] = ["call_operator"];
do
{
$cjm.push("call_operator");
for (var item in digression.call_operator.responses)
{
#say(item, repeatMode: "ignore");
}
#repeat(accuracy: "repeat");
return;
}
transitions
{
}
}
\ No newline at end of file
library
preprocessor digression can_hear_you_preprocessor
{
conditions { on true priority 100; }
var retriesLimit=2;
var counter=0;
do
{
if (digression.can_hear_you.resetOnRecognized)
{
set digression.can_hear_you.counter = 0;
#log(digression.can_hear_you.counter);
}
set digression.can_hear_you.resetOnRecognized = true;
#log(digression.can_hear_you.resetOnRecognized);
return;
}
transitions
{
}
}
digression can_hear_you
{
conditions { on #messageHasAnyIntent(digression.can_hear_you.triggers) priority -100; }
var retriesLimit = 2;
var counter = 0;
var resetOnRecognized=false;
var triggers = ["can_you_hear_me"];
var responses: Phrases[] = ["i_can_hear_you"];
do
{
set $cjm = external performed_stage($cjm, "can_hear_you_dig");
if (digression.can_hear_you.counter == digression.can_hear_you.retriesLimit)
{
goto bye;
}
set digression.can_hear_you.counter = digression.can_hear_you.counter + 1;
#log(digression.can_hear_you.counter);
set digression.can_hear_you.resetOnRecognized = false;
for (var item in digression.can_hear_you.responses)
{
#say(item, repeatMode: "ignore");
}
#repeat(accuracy: "repeat");
return;
}
transitions
{
bye: goto dont_understand_hangup;
}
}
......@@ -14,7 +14,6 @@ digression dont_understand_hangup_params
var serviceStatus = "Done";
do
{
set $cjm = external performed_stage($cjm, "dont_understand_hangup_params");
}
transitions
{
......@@ -30,13 +29,13 @@ digression dont_understand
var responses: Phrases[] = ["dont_understand"];
do
{
set $cjm = external performed_stage($cjm, "dont_understand");
if (digression.dont_understand.counter == digression.dont_understand.retriesLimit)
if (digression.dont_understand.counter > digression.dont_understand.retriesLimit)
{
goto hangup;
}
set digression.dont_understand.counter=digression.dont_understand.counter+1;
set digression.dont_understand.resetOnRecognized = false;
$cjm.push("dont_understand_dig");
for (var item in digression.dont_understand.responses)
{
#say(item, repeatMode: "ignore");
......@@ -72,7 +71,7 @@ node dont_understand_hangup
{
do
{
set $cjm = external performed_stage($cjm, "dont_understand_hangup");
$cjm.push("dont_understand_hangup");
for (var item in digression.dont_understand_hangup_params.responses)
{
......
......@@ -13,7 +13,7 @@ digression hangup
var serviceStatus = "UserHangup";
do
{
set $cjm = external performed_stage($cjm, "hangup");
$cjm.push("hangup");
set $serviceStatus = digression.hangup.serviceStatus;
//#disconnect();
......
......@@ -19,7 +19,7 @@ preprocessor digression hello
}
set digression.hello.counter=digression.hello.counter+1;
#say("hello", repeatMode: "ignore");
//#say("dont_understand_question");
// #say("dont_understand_question");
#repeat(accuracy: "short");
return;
}
......@@ -47,7 +47,7 @@ node hello_hangup
{
do
{
set $cjm = external performed_stage($cjm, "hello_hangup");
$cjm.push("hello_hangup");
#say("dont_understand_hangup");
set $status="EmptyCall";
......
library
digression i_am_robot
{
conditions { on #messageHasAnyIntent(digression.i_am_robot.triggers); }
var triggers = ["are_you_a_robot"];
var responses: Phrases[] = ["yes_i_am_a_robot"];
do
{
for (var item in digression.i_am_robot.responses)
{
#say(item, repeatMode: "ignore");
}
#repeat(accuracy: "short");
return;
}
transitions
{
}
}
......@@ -29,7 +29,6 @@ digression repeat_hangup_params
var serviceStatus = "Done";
do
{
set $cjm = external performed_stage($cjm, "repeat_hangup_params");
}
transitions
{
......@@ -42,11 +41,11 @@ digression repeat
var retriesLimit = 2;
var counter = 0;
var resetOnRecognized=false;
var triggers = ["repeat", "dont_understand"];
var triggers = ["repeat", "dont_understand", "what"];
var responses: Phrases[] = ["i_said"];
do
{
set $cjm = external performed_stage($cjm, "repeat_dig");
$cjm.push("repeat_dig");
if (digression.repeat.counter == digression.repeat.retriesLimit)
{
goto hangup;
......@@ -76,7 +75,7 @@ digression ping
var triggers = ["ping"];
do
{
set $cjm = external performed_stage($cjm, "ping_dig");
$cjm.push("ping_dig");
if (digression.repeat.counter == digression.repeat.retriesLimit)
{
goto hangup;
......@@ -97,7 +96,7 @@ node repeat_or_ping_hangup
{
do
{
set $cjm = external performed_stage($cjm, "repeat_or_ping_hangup");
$cjm.push("repeat_or_ping_hangup");
for (var item in digression.repeat_hangup_params.responses)
{
......
library
block doWait():doWaitMore {
start node root {
do {
#log("block 'doWait'");
wait*;
}
transitions {
transition1: goto wait_for_abonent_speech on timeout 5000;
}
}
node wait_for_abonent_speech {
do {
#sayText("Вы готовы продолжить?", repeatMode: "ignore");
wait*;
}
transitions {
yes: goto stopwaiting on #messageHasSentiment("positive") || #messageHasIntent("ready");
maybe: goto root on true && !#messageHasSentiment("positive") && !#messageHasIntent("ready") && !#messageHasSentiment("negative");
no: goto waiting on #messageHasSentiment("negative");
}
}
node waiting {
do {
#sayText("Жду.", repeatMode: "ignore");
goto root;
}
transitions{
root: goto root;
}
}
node stopwaiting {
do {
// return value from block
return "yes";
}
}
}
digression wait_for_abonent
{
conditions { on #messageHasAnyIntent(digression.wait_for_abonent.triggers); }
var triggers = ["wait", "waitfor"];
var responses: Phrases[] = ["imwaiting"];
do
{
$cjm.push("wait_for_abonent");
for (var item in digression.wait_for_abonent.responses)
{
#say(item, repeatMode: "ignore");
}
var block_result = blockcall doWait();
if (block_result == "yes")
{
#sayText("Давайте продолжим", repeatMode: "ignore");
#repeat(accuracy:"short");
return;
}
}
transitions
{
}
}
\ No newline at end of file
library
digression when_callback
{
conditions { on #messageHasIntent("when_callback") && !#messageHasIntent("notAboutCallback") priority 100; }
var responses: Phrases[] = ["willcallback"];
do
{
$cjm.push("when_callback");
for (var item in digression.when_callback.responses)
{
#say(item, repeatMode: "ignore");
//#sayText("У вас остались еще вопросы?");
}
#repeat(accuracy:"short");
return;
}
transitions
{
}
}
......@@ -22,7 +22,8 @@
],
"excludes":[
"але",
"передавай"
"передавай",
"я не был у вас"
]
},
"decline": {
......@@ -49,7 +50,14 @@
"не готов говорить",
"не могу говорить",
"занят",
"нету времени говорить"
"нету времени говорить",
"неудобно разговаривать",
"можете позже",
"попозже",
"ну извините мне некогда"
],
"excludes":[
"говорите"
]
},
"can_talk":
......@@ -67,8 +75,12 @@
"отправьте на почту",
"отправьте",
"отправляйте",
"Отправляйте на ватсап",
"А вы можете в мессенджер "
"отправляйте на ватсап",
"а вы можете в мессенджер ",
"на ватсап",
"на этот номер",
"на мой номер отправьте",
"на этот же номер"
]
},
"dont_need":
......@@ -133,6 +145,8 @@
"у меня вырубило интернет",
"я не был",
"я не была",
"но я не была",
"но я не был",
"не посещала",
"не посещал",
"я иллюминаторы не посещала",
......@@ -140,16 +154,25 @@
"не я посещал",
"не посмотрел",
"не посмотрела",
"не смотрела",
"не смотрел его",
"я даже не смотрела",
"у меня интернет что то обрываться",
"у меня не получилось к сожалению вебинар посмотреть на работе очень много работы поэтому как то мне не успела я"
"у меня не получилось к сожалению вебинар посмотреть на работе очень много работы поэтому как то мне не успела я",
"я не успела посетить вебинар",
"мне некогда было",
"к сожалению не получилось",
"я не была нигде",
"у меня плохо работала интернет"
],
"excludes":[]
},
"did_not_liked": {
"includes": [
"мне не особо понравился",
"Не особо"
"Не особо",
"не очень не понравилось",
"ну честно говоря до конца не дослушала"
],
"excludes": [
]
......@@ -158,7 +181,51 @@
"includes": [
"телеграмм",
"телега",
"на почту"
"на почту",
"на электронную почту",
"на и мэйл",
"маймыл"
],
"excludes": [
]
},
"who_you_are": {
"includes": [
"не понял кто звонит"
],
"excludes": [
]
},
"what_you_want": {
"includes": [
"чего вы хотите",
"а для чего вы звоните"
],
"excludes": [
]
},
"when_conference": {
"includes": [
"но когда",
"но когда на какое время",
"на какое время сейчас у меня нет возможности",
"когда это будет"
],
"excludes": [
]
},
"zoom_cost": {
"includes": [
"это бесплатно"
],
"excludes": [
]
},
"record": {
"includes": [
"записей есть у вас ",
"я спрашивал запись есть вчерашнего вебинара когда",
"слышь друг записей"
],
"excludes": [
]
......
......@@ -3,7 +3,7 @@ import "commonReactions/all.dsl";
context {
input phone: string;
input caller: string;
//input waiting: number;
input waiting: number;
output cjm: string[] = [];
output need_ask_name: boolean = true;
......@@ -43,7 +43,7 @@ start node root
{
do
{
set $cjm = external performed_stage($cjm, "root");
$cjm.push("root");
set $conversation_start = external time_stamp();
goto caller_id;
}
......@@ -68,11 +68,12 @@ node caller_id
{
do
{
set $cjm = external performed_stage($cjm, "caller_id");
$cjm.push("caller_id");
#connectSafe($phone);
#waitForSpeech(1000);
digression disable { conference_time, zoom_cost };
// Строим приветствие, зависящее от времени суток
//var part_of_the_day_name = external part_of_the_day();
var part_of_the_day_name = "day";
......@@ -103,17 +104,55 @@ node caller_id
transitions
{
//end_conversation: goto end_conversation on true;
canttalkrn: goto cant_talk_rn on #messageHasAnyIntent(["decline"]) || #messageHasSentiment("negative");
canttalkrn: goto cant_talk_rn on #messageHasAnyIntent(["decline", "cant_talk_rn"]) || #messageHasSentiment("negative");
cantalk: goto can_talk on #messageHasAnyIntent(["accept", "can_talk"]) || #messageHasSentiment("positive");
whoyouare: goto who_you_are on #messageHasIntent("who_you_are");
gift: goto gift on #messageHasIntent("what_you_want");
}
}
node who_you_are //кто вы такие?
{
do
{
$cjm.push("who_you_are");
#say("whoiam");
var result = blockcall SkipMessagesBlock();
wait *;
}
transitions
{
//end_conversation: goto end_conversation on true;
canttalkrn: goto cant_talk_rn on #messageHasAnyIntent(["decline", "cant_talk_rn"]) || #messageHasSentiment("negative");
cantalk: goto can_talk on #messageHasAnyIntent(["accept", "can_talk"]) || #messageHasSentiment("positive");
}
}
node gift //короткий переход к предложению промокода
{
do
{
$cjm.push("gift");
#say("gift");
var result = blockcall SkipMessagesBlock();
wait *;
}
transitions
{
positive: goto send_it on #messageHasSentiment("positive") || #messageHasIntent("send_it");
negative: goto dont_need on #messageHasSentiment("negative");
}
}
node helpful_pos
{
do
{
//Спасибо за ваше мнение! Поздравляю! Вы были...
set $cjm = external performed_stage($cjm, "helpful_pos");
$cjm.push("helpful_pos");
#say("helpful_pos");
var result = blockcall SkipMessagesBlock();
wait*;
......@@ -122,15 +161,34 @@ node helpful_pos
{
positive: goto send_it on #messageHasSentiment("positive") || #messageHasIntent("send_it");
negative: goto dont_need on #messageHasSentiment("negative");
allready_have: goto allready_have on #messageHasIntent("allready_have");
}
}
node allready_have
{
do
{
$cjm.push("allready_have");
#say("allready_have");
#say("thanks_for_time");
var result = blockcall SkipMessagesBlock();
goto end_conversation;
}
transitions
{
end_conversation: goto end_conversation;
}
}
node helpful_neg //pair2
{
do
{
//Подскажите, пожалуйста, что Вам не понравилось?
set $cjm = external performed_stage($cjm, "helpful_neg");
$cjm.push("helpful_neg");
#say("helpful_neg");
var result = blockcall SkipMessagesBlock();
wait*;
......@@ -146,15 +204,15 @@ node understood //pair3
do
{
//Поняла Вас. Мы постараемся учесть Ваши пожел
set $cjm = external performed_stage($cjm, "understood");
$cjm.push("understood");
#say("understood");
var result = blockcall SkipMessagesBlock();
wait*;
}
transitions
{
positive: goto send_it on #messageHasSentiment("positive") || #messageHasIntent("send_it");
negative: goto dont_need on #messageHasSentiment("negative");
positive: goto send_it on #messageHasSentiment("positive") || #messageHasAnyIntent(["send_it","another_messangers"]);
negative: goto dont_need on #messageHasSentiment("negative")|| #messageHasAnyIntent(["not_interested", "decline"]);
}
}
......@@ -163,7 +221,7 @@ node send_it
do
{
//Подскажите, а на этом номере есть вотсап?
set $cjm = external performed_stage($cjm, "send_it");
$cjm.push("send_it");
#say("have_whatsapp");
var result = blockcall SkipMessagesBlock();
wait*;
......@@ -180,14 +238,14 @@ node dont_need
do
{
//почему отказываетесь
set $cjm = external performed_stage($cjm, "dont_need");
$cjm.push("dont_need");
#say("why_reject");
var result = blockcall SkipMessagesBlock();
wait*;
}
transitions
{
negative: goto thanks_bye_2 on #messageHasSentiment("negative") || #messageHasIntent("not_interested");
negative: goto thanks_bye on #messageHasSentiment("negative") || #messageHasIntent("not_interested");
}
}
......@@ -212,7 +270,7 @@ node yes_whatsapp
do
{
//Отлично. Сейчас отправлю Вам промокод. Всего доброго до свидания.
set $cjm = external performed_stage($cjm, "yes_whatsapp");
$cjm.push("yes_whatsapp");
set $accepted_code = true;
#say("gonna_send_code");
var result = blockcall SkipMessagesBlock();
......@@ -229,7 +287,7 @@ node no_whatsapp
do
{
//Продиктуйте, пожалуйста данные, куда я могу отпр промокод
set $cjm = external performed_stage($cjm, "no_whatsapp");
$cjm.push("no_whatsapp");
#say("give_contacts");
var result = blockcall SkipMessagesBlock();
wait*;
......@@ -260,7 +318,7 @@ node thanks_bye
do
{
//Благодарю за уделенное время. Всего доброго.
set $cjm = external performed_stage($cjm, "thanks_bye");
$cjm.push("thanks_bye");
#say("thanks_bye");
goto end_conversation;
......@@ -276,7 +334,7 @@ node can_talk //могу говорить
do
{
//вы недавно посетили вебинар...
set $cjm = external performed_stage($cjm, "can_talk");
$cjm.push("can_talk");
#say("how_helpful");
var result = blockcall SkipMessagesBlock();
wait*;
......@@ -284,8 +342,8 @@ node can_talk //могу говорить
}
transitions
{
positive: goto helpful_pos on #messageHasSentiment("positive") || #messageHasIntent("accept");
negative: goto helpful_neg on #messageHasSentiment("negative") || #messageHasAnyIntent(["decline", "did_not_liked"]);
positive: goto helpful_pos on #messageHasSentiment("positive") && !#messageHasIntent("ididnt_watch") || #messageHasIntent("accept") && !#messageHasIntent("ididnt_watch");
negative: goto helpful_neg on #messageHasSentiment("negative") || #messageHasAnyIntent(["decline", "did_not_liked", "not_really"]);
didnt_whatc: goto not_present on #messageHasIntent("ididnt_watch");
}
}
......@@ -294,6 +352,7 @@ node not_present // Давайте проведем бесплатный Зум,
{
do
{
digression enable { conference_time, zoom_cost };
set $cjm = external performed_stage($cjm, "not_present");
#say("free_zoom");
var result = blockcall SkipMessagesBlock();
......@@ -311,7 +370,7 @@ node zoom_positive // Ожидайте звонка. Всего доброго,
{
do
{
set $cjm = external performed_stage($cjm, "zoom_positive");
$cjm.push("zoom_positive");
#say("zoom_positive");
goto do_before_exit;
......@@ -326,8 +385,8 @@ node zoom_negitive // Подскажите, пожалуйста, а что Ва
{
do
{
set $cjm = external performed_stage($cjm, "zoom_negitive");
#say("zoom_negative");
$cjm.push("zoom_negitive");
#say("why_reject");
var result = blockcall SkipMessagesBlock();
wait*;
......@@ -342,7 +401,7 @@ node retry // За полчаса мы можем показать вам точ
{
do
{
set $cjm = external performed_stage($cjm, "retry");
$cjm.push("retry");
#say("retry");
var result = blockcall SkipMessagesBlock();
wait*;
......@@ -351,7 +410,7 @@ node retry // За полчаса мы можем показать вам точ
transitions
{
positive: goto zoom_positive on #messageHasSentiment("positive");
negative: goto thanks_bye_2 on #messageHasSentiment("negative");
negative: goto thanks_bye on #messageHasSentiment("negative");
}
}
......@@ -360,7 +419,7 @@ node cant_talk_rn //не могу говорить
do
{
//благодарю досвидания (в самом начале)
set $cjm = external performed_stage($cjm, "cant_talk_rn");
$cjm.push("cant_talk_rn");
#say("thanks_for_time");
goto end_conversation;
}
......@@ -373,7 +432,7 @@ node end_conversation
{
do
{
set $cjm = external performed_stage($cjm, "end_conversation");
$cjm.push("end_conversation");
goto do_before_exit;
}
transitions
......@@ -386,7 +445,7 @@ node do_before_exit
{
do
{
set $cjm = external performed_stage($cjm, "do_before_exit");
$cjm.push("do_before_exit");
set $conversation_stop = external time_stamp();
exit;
}
......@@ -400,7 +459,7 @@ digression @exit_dig
conditions { on true tags: onclosed; }
do
{
set $cjm = external performed_stage($cjm, "@exit_dig");
$cjm.push("@exit_dig");
set $conversation_status = "broken";
goto do_before_exit;
}
......@@ -409,3 +468,64 @@ digression @exit_dig
do_before_exit: goto do_before_exit;
}
}
digression conference_time
{
conditions { on #messageHasAnyIntent(digression.conference_time.triggers); }
var triggers = ["when_conference"];
var responses: Phrases[] = ["conference_time"];
do
{
$cjm.push("conference_time");
for (var item in digression.conference_time.responses)
{
#say(item, repeatMode: "ignore");
}
wait*;
}
transitions
{
positive: goto zoom_positive on #messageHasSentiment("positive");
negative: goto zoom_negitive on #messageHasSentiment("negative");
}
}
digression zoom_cost
{
conditions { on #messageHasAnyIntent(digression.zoom_cost.triggers); }
var triggers = ["zoom_cost"];
var responses: Phrases[] = ["zoom_cost"];
do
{
$cjm.push("zoom_cost");
for (var item in digression.zoom_cost.responses)
{
#say(item, repeatMode: "ignore");
}
goto retry;
}
transitions
{
retry: goto zoom_positive;
}
}
digression record
{
conditions { on #messageHasAnyIntent(digression.record.triggers); }
var triggers = ["record"];
var responses: Phrases[] = ["record"];
do
{
$cjm.push("record");
for (var item in digression.record.responses)
{
#say(item, repeatMode: "ignore");
}
#repeat(accuracy: "short");
return;
}
transitions
{
}
......@@ -405,7 +405,37 @@
}
]
]
},
"whoiam":[
{
"text": "Менеджер сервиса аналитики Вайлдберис от Хантер Сейлс, уделите минуту?"
}
],
"gift":[
{
"text": "Вы посещали наш вебинар, и были выбраны случайным образом. Дарим промокод на скидку. Куда я могу Вам всё отправить?"
}
],
"conference_time":[
{
"text": "Я передам контакты нашему аналитику, и вы согласуете с ним дату аудита, хорошо?"
}
],
"zoom_cost":[
{
"text": "Мы проводим индивидуальные зумы абсолютно бесплатно."
}
],
"record":[
{
"text": "К сожалению, записей вебинаров мы принципиально не делаем. Мы предоставляем нашим клиентам только записи Академии."
}
],
"allready_have":[
{
"text": "К сожалению, записей вебинаров мы принципиально не делаем. Мы предоставляем нашим клиентам только записи Академии."
}
]
},
"types": {},
......@@ -426,7 +456,13 @@
"free_zoom":{},
"zoom_positive":{},
"zoom_negative":{},
"retry":{}
"retry":{},
"whoiam":{},
"gift":{},
"conference_time":{},
"zoom_cost":{},
"record":{},
"allready_have":{}
}
}
......
......@@ -259,8 +259,8 @@
},
"node::no_whatsapp": {
"common.position": {
"x": -1104.239811012472,
"y": -846.1123321578459
"x": -1201.493710691824,
"y": -820.6185914652003
}
},
"node::yes_whatsapp": {
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!