Commit 7267998e by Kulkova

Merge remote-tracking branch 'origin/master'

2 parents ff01ca86 2e143590
......@@ -7,6 +7,7 @@ digression can_hear_you
var responses: Phrases[] = ["i_can_hear_you"];
do
{
if ($conversation_result == "Нет ответа") {set $conversation_result = ""; }
for (var item in digression.can_hear_you.responses)
{
#say(item, repeatMode: "ignore");
......
......@@ -29,6 +29,8 @@ digression dont_understand
var responses: Phrases[] = ["dont_understand"];
do
{
$cjm.push("dont_understand_dig");
if ($conversation_result == "Нет ответа") {set $conversation_result = ""; }
if (digression.dont_understand.counter > digression.dont_understand.retriesLimit)
{
goto hangup;
......
......@@ -9,6 +9,7 @@ digression i_am_robot
do
{
$cjm.push("i_am_robot");
if ($conversation_result == "Нет ответа") {set $conversation_result = ""; }
if(digression.i_am_robot.counter == 1)
{
goto answering_machine;
......
......@@ -11,9 +11,9 @@ preprocessor digression machine
set $conversation_result = "автоответчик";
set $status = "wait_answer";
set digression.machine.visited += 1;
//if(digression.machine.visited == 2 || (digression.wait_answer.visited == 1 && digression.machine.visited == 1)) {goto do_before_exit;}
return;
//wait *;
if(digression.machine.visited == 2) {goto do_before_exit;}
//return;
wait *;
}
transitions
{
......@@ -25,49 +25,6 @@ preprocessor digression machine
}
}
digression wait_answer // дигрессии
{
conditions
{
on #messageHasIntent("robot_marker") && digression.wait_answer.visited < 3 priority 110000;
}
var visited = 0;
do
{
$cjm.push("wait_answer_dig");
digression disable hello;
set $status = "wait_answer";
set digression.wait_answer.visited += 1;
wait *;
}
transitions
{
bot: goto answering_machine on #messageHasIntent("robot_marker");
someone: goto fitness_not_qualified on true;
maybe_bot: goto answering_machine on timeout 10000;
}
}
digression ivr // дигрессии
{
conditions
{
on #messageHasIntent("robot_marker") && digression.wait_answer.visited == 0 && digression.ivr.visited < 3 priority 110000;
}
var visited = 0;
do
{
$cjm.push("ivr_dig");
set $status = "ivr";
set digression.ivr.visited += 1;
set $conversation_result = "автоответчик";
return;
}
transitions
{
}
}
node fitness_not_qualified
{
do
......
......@@ -47,6 +47,7 @@ digression repeat
do
{
$cjm.push("repeat_dig");
if ($conversation_result == "Нет ответа") {set $conversation_result = ""; }
if (digression.repeat.counter == digression.repeat.retriesLimit)
{
goto hangup;
......
......@@ -72,7 +72,8 @@
"там будет",
"да иди ты катя",
"спасибо",
"пока нет не сегодня не сейчас точно"
"пока нет не сегодня не сейчас точно",
"ну расскажите про условия"
]
},
"decline": {
......@@ -147,7 +148,8 @@
"ну почему бы нет",
"да алло",
"присылайте скорее",
"я уже не интересует спасибо"
"я уже не интересует спасибо",
"ой знаете ровно я не принимаю никаких решение вы не туда позвонили"
]
},
"not_sure": {
......@@ -493,6 +495,53 @@
"компания кофе хар здравствуйте"
]
},
"where_number": {
"includes": [
"откуда у вас мой номер",
"где вы взяли этот номер",
"откуда у вас этот номер",
"кто вам дал мой номер",
"откуда вы взяли этот номер",
"откуда вас мой номер",
"ну где вы нашли на вконтакте",
"где вы нашли мою вконтакте",
"я не знаю откуда вы вообще знаете вы кому звоните",
"откуда у вас мой номер телефона вы вообще знаете вы вы кому звоните",
"ну где вы нашли на вконтакте",
"где вы нашли мою вконтакте",
"откуда у вас мой номер",
"откуда вы взяли мой номер",
"где вы взяли мой номер",
"ну у меня возникла абсолютно первый и главный вопрос откуда вы произвели партию моего контакта",
"откуда вы испортили мой контакт",
"откуда вы из портфеля мой контактный номер",
"откуда у вас мой номер телефона",
"мне просто интересно я как бы без претензий просто где вы взяли мои контакты",
"откуда контакты",
"откуда у вас мои контакты",
"нет таких здесь нет вы номер правильно набрали",
"нет таких здесь нет вы номер правильно надрали",
"и какой номер набирали",
"откуда мой номер у вас"
],
"excludes": [
"а что вы хотели кого вам",
"а с кем я разговариваю понятно",
"это ясно а с кем я разговариваю"
]
},
"where_call": {
"includes": [
"а вы куда звоните кому",
"ну и куда вы набираете ну куда вот вы куда вы куда набираете",
"а ты сейчас предлагаете что то кредит звонить ладно здравствуйте напасть на какой телефон звоните что там предлагаете вы кому звоните вообще вы откуда информацию на телефон взяли позвонить",
"как вы сказали кому вы звоните"
],
"excludes": [
"а что вы хотели кого вам",
"давайте фиксируемую а куда ехать надо"
]
},
"what_company": {
"includes": [
"да я видела звонили вы рекламную компанию какую представляете",
......@@ -522,7 +571,8 @@
"корпоративный чего",
"кто корпоративный кто",
"компания как называется оперативный как",
"что же мне тверская"
"что же мне тверская",
"какая компания повторите еще раз"
],
"excludes": [
"какая фишку сервиса",
......@@ -560,7 +610,8 @@
"На емейл отправьте",
"Кидай на почту, потом посмотрю",
"Отправляй на емейл",
"На электронку кидай"
"На электронку кидай",
"а давайте отправите предложение на почту"
],
"excludes": [
......@@ -584,7 +635,8 @@
"что от меня требуется",
"на каких условиях",
"как что происходить будет",
"условия то какие"
"условия то какие",
"ну расскажите про условия"
],
"excludes": [
......@@ -669,7 +721,8 @@
"это не ко мне",
"я этим не занимаюсь",
"вам нужен другой человек",
"по этому вопросу не ко мне"
"по этому вопросу не ко мне",
"ой знаете ровно я не принимаю никаких решение вы не туда позвонили"
],
"excludes": [
......
......@@ -8,6 +8,7 @@ context {
output conversation_start: number = 0;
output conversation_begin: number = 0;
output conversation_stop: number = 0;
output template_id: number = 1;
output conversation_status: string = "normal";
output conversation_result: string = "Нет ответа";
output time: number = 0;
......@@ -67,7 +68,35 @@ node caller_id
// Запоминаем временной штамп перед самой первой репликой
set $conversation_begin = #getCurrentTime();
if(#say("first_hello", interruptible:true, options:
{
interruptConditions:["robot_marker", "answering_machine"]
}
))
var result = blockcall SkipMessagesBlock();
wait *;
}
transitions
{
bot: goto its_machine on #messageHasIntent("robot_marker") || #messageHasIntent("answering_machine");
neitral: goto cantalk on true;
time: goto cantalk on timeout 500;
}
onexit
{
bot: do
{
set $conversation_result = "автоответчик";
}
}
}
node cantalk
{
do
{
$cjm.push("cantalk");
if (#say("greetings", interruptible: true, options: { interruptConditions: ["robot_marker", "answering_machine"], repeatMode: "ignore" }))
var result = blockcall SkipMessagesBlock();
wait *;
......@@ -77,7 +106,7 @@ node caller_id
bot: goto its_machine on #messageHasAnyIntent(["robot_marker", "answering_machine"]);
positive: goto presentation on #messageHasAnyIntent(["accept" ,"agree"]) || #messageHasSentiment("positive");
what_question: goto presentation on #messageHasIntent("what_question");
cant_talk: goto letme_40sec on #messageHasAnyIntent(["cant_talk_rn", "call_later", "decline"]);
cant_talk: goto letme_40sec on #messageHasAnyIntent(["cant_talk_rn", "call_later", "decline", "potential_call_later"]);
time: goto presentation on timeout 5000;
}
onexit
......@@ -85,6 +114,27 @@ node caller_id
bot: do
{
set $conversation_result = "автоответчик";
digression disable {machine};
}
positive: do
{
set $conversation_result = "";
digression disable {machine};
}
what_question: do
{
set $conversation_result = "";
digression disable {machine};
}
cant_talk: do
{
set $conversation_result = "перезвонить";
digression disable {machine};
}
time: do
{
set $conversation_result = "";
digression disable {machine};
}
}
}
......@@ -95,7 +145,7 @@ node presentation
{
$cjm.push("presentation");
if (#say("presentation", interruptible: true, options: {repeatMode: "short" }))
if (#say("presentation", interruptible: true, options: {repeatMode: "short"}))
var result = blockcall SkipMessagesBlock();
wait *;
}
......@@ -115,8 +165,6 @@ node letme_40sec
do
{
$cjm.push("letme_40sec");
digression disable {wait_answer, machine};
#say("letme_40sec");
var result = blockcall SkipMessagesBlock();
wait*;
......@@ -128,7 +176,9 @@ node letme_40sec
}
onexit
{
positive: do {
set $conversation_result = "";
}
}
}
......@@ -182,9 +232,7 @@ node last_word
do
{
$cjm.push("last_word");
if (#say("last_word", repeatMode: "ignore"))
#say("last_word");
var result = blockcall SkipMessagesBlock();
wait *;
}
......@@ -223,9 +271,7 @@ node decline
do
{
$cjm.push("decline");
#say("decline");
var result = blockcall SkipMessagesBlock();
goto do_before_exit;
}
......@@ -291,12 +337,12 @@ digression what_company
var counter = 0;
var resetOnRecognized=false;
var responses: Phrases[] = ["who_are_you"];
var responses: Phrases[] = ["company"];
do
{
$cjm.push("what_company_dig");
if ($conversation_result == "Нет ответа") {set $conversation_result = ""; }
if (digression.what_company.counter == digression.what_company.retriesLimit)
{
digression disable { what_company };
......@@ -319,6 +365,34 @@ digression what_company
}
}
digression who_are_you
{
conditions { on #messageHasAnyIntent(["who_are_you"]); }
var retriesLimit = 2;
var counter = 0;
var resetOnRecognized=false;
var responses: Phrases[] = ["who_are_you"];
do
{
$cjm.push("who_are_you_dig");
if ($conversation_result == "Нет ответа") {set $conversation_result = ""; }
for (var item in digression.who_are_you.responses)
{
#say(item, repeatMode: "ignore");
}
#repeat("short");
var result = blockcall SkipMessagesBlock();
return;
}
transitions
{
positive: goto last_word on #messageHasAnyIntent(["accept", "agree"]);
negative: goto yandex_guaranteed on #messageHasAnyIntent(["not_interested", "decline"]);
}
}
digression city_address
{
conditions { on #messageHasIntent("city_address"); }
......@@ -326,9 +400,8 @@ digression city_address
do
{
$cjm.push("city_address_dig");
if ($conversation_result == "Нет ответа") {set $conversation_result = ""; }
digression disable { city_address };
#say("city_address", repeatMode: "ignore");
var result = blockcall SkipMessagesBlock();
wait *;
......@@ -351,9 +424,8 @@ digression what_price
do
{
$cjm.push("what_price_dig");
if ($conversation_result == "Нет ответа") {set $conversation_result = ""; }
digression disable { what_price };
#say("what_price", repeatMode: "ignore");
var result = blockcall SkipMessagesBlock();
wait *;
......@@ -376,9 +448,8 @@ digression send_on_mail
do
{
$cjm.push("send_on_mail_dig");
if ($conversation_result == "Нет ответа") {set $conversation_result = ""; }
digression disable { send_on_mail };
#say("send_on_mail", repeatMode: "ignore");
var result = blockcall SkipMessagesBlock();
wait *;
......@@ -401,9 +472,8 @@ digression guarantee
do
{
$cjm.push("guarantee_dig");
if ($conversation_result == "Нет ответа") {set $conversation_result = ""; }
digression disable { guarantee };
#say("guarantee", repeatMode: "ignore");
var result = blockcall SkipMessagesBlock();
wait *;
......@@ -419,6 +489,30 @@ digression guarantee
}
}
digression where_number
{
conditions { on #messageHasAnyIntent(["where_call", "where_number", "where_did_you_get_my_number"]); }
do
{
$cjm.push("where_number_dig");
if ($conversation_result == "Нет ответа") {set $conversation_result = ""; }
digression disable { where_number };
#say("where_number", repeatMode: "ignore");
var result = blockcall SkipMessagesBlock();
wait *;
}
transitions
{
positive: goto last_word on #messageHasAnyIntent(["accept", "agree"]);
negative: goto yandex_guaranteed on #messageHasAnyIntent(["not_interested", "decline"]);
}
onexit
{
}
}
digression what_conditions
{
conditions { on #messageHasIntent("what_conditions"); }
......@@ -426,9 +520,8 @@ digression what_conditions
do
{
$cjm.push("what_conditions_dig");
if ($conversation_result == "Нет ответа") {set $conversation_result = ""; }
digression disable { what_conditions };
#say("what_conditions", repeatMode: "ignore");
var result = blockcall SkipMessagesBlock();
wait *;
......@@ -451,9 +544,8 @@ digression what_service
do
{
$cjm.push("what_service_dig");
if ($conversation_result == "Нет ответа") {set $conversation_result = ""; }
digression disable { what_service };
#say("what_service", repeatMode: "ignore");
var result = blockcall SkipMessagesBlock();
wait *;
......@@ -476,9 +568,8 @@ digression what_difference
do
{
$cjm.push("what_difference_dig");
if ($conversation_result == "Нет ответа") {set $conversation_result = ""; }
digression disable { what_difference };
#say("what_difference", repeatMode: "ignore");
var result = blockcall SkipMessagesBlock();
wait *;
......@@ -501,9 +592,8 @@ digression already_using
do
{
$cjm.push("already_using_dig");
if ($conversation_result == "Нет ответа") {set $conversation_result = ""; }
digression disable { already_using };
#say("already_using", repeatMode: "ignore");
var result = blockcall SkipMessagesBlock();
wait *;
......@@ -526,9 +616,8 @@ digression not_social
do
{
$cjm.push("not_social_dig");
if ($conversation_result == "Нет ответа") {set $conversation_result = ""; }
digression disable { not_social };
#say("not_social", repeatMode: "ignore");
var result = blockcall SkipMessagesBlock();
wait *;
......@@ -551,9 +640,8 @@ digression our_site
do
{
$cjm.push("our_site_dig");
if ($conversation_result == "Нет ответа") {set $conversation_result = ""; }
digression disable { our_site };
#say("our_site", repeatMode: "ignore");
var result = blockcall SkipMessagesBlock();
wait *;
......@@ -576,9 +664,8 @@ digression alternatives
do
{
$cjm.push("alternatives_dig");
if ($conversation_result == "Нет ответа") {set $conversation_result = ""; }
digression disable { alternatives };
#say("alternatives", repeatMode: "ignore");
var result = blockcall SkipMessagesBlock();
wait *;
......@@ -595,25 +682,44 @@ digression alternatives
}
// Дигрессии с негативным исходом
digression refusenik
digression closed
{
conditions { on #messageHasAnyIntent(["not_lpr", "closed"]); }
conditions { on #messageHasAnyIntent(["closed"]); }
do
{
$cjm.push("refusenik_dig");
digression disable { refusenik };
var result = blockcall SkipMessagesBlock();
goto decline;
$cjm.push("closed_dig");
if ($conversation_result == "Нет ответа") {set $conversation_result = "закрыт"; }
digression disable { closed };
#say("closed");
goto do_before_exit;
}
transitions
{
decline: goto decline;
do_before_exit: goto do_before_exit;
}
onexit
{
}
}
digression not_lpr
{
conditions { on #messageHasIntent("not_lpr"); }
do
{
$cjm.push("not_lpr_dig");
if ($conversation_result == "Нет ответа") {set $conversation_result = "не лпр"; }
digression disable { not_lpr };
#say("not_lpr", repeatMode: "ignore");
goto do_before_exit;
}
transitions
{
do_before_exit: goto do_before_exit;
}
onexit
{}
}
......@@ -11,7 +11,7 @@
"random": [
[
{
"text": "Алло, день добрый."
"text": "Алло"
}
],
[
......@@ -26,7 +26,11 @@
]
]
},
"first_hello": [
{
"text": "Ало, день добрый"
}
],
"greetings": [
{
"text": "Это Денис, агентство Р-брокер, мы официальные партнёры Яндекса, я насчёт профиля вашей организации на Яндекс.Картах, удобно говорить?"
......@@ -46,7 +50,7 @@
},
"last_word": [
{
"text": "Хорошо, я передам всё менеджеру, он вам перезвонит и подробней проконсультирует."
"text": "Хорошо, я передам всё менеджеру, он вам перезвонит и подробней проконсультирует. Спасибо, досвидания"
}
],
"acception": [
......@@ -82,18 +86,16 @@
}
],
"who_are_you": {
"first": [
"who_are_you": [
{
"text": "Меня зовут Денис, агентство ЭР-брокер, партнёры Яндекса. Мы представляем инструмент для автоматизации рекламы на картах, - Яндекс подписку, которая позволяет привлекать новых клиентов. Подробней можно как раз с нашим экспертом обсудить, вам было бы интересно?"
}
],
"short": [
"company": [
{
"text": "Агентство Р-брокер, мы официальные партнёры Яндекса. представляем инструмент для автоматизации рекламы на картах, - Яндекс подписку, которая позволяет привлекать новых клиентов. Подробней можно как раз с нашим экспертом обсудить, вам было бы интересно?"
}
]
},
],
"city_address": [
{
"text": "Наш главный офис находится в Москве, а так мы работаем онлайн по всей России. Мы официальные партнёры Яндекса. Представляем инструмент для автоматизации рекламы на картах, - Яндекс подписку, которая позволяет привлекать новых клиентов. Подробней можно как раз с нашим экспертом обсудить, вам было бы интересно?"
......@@ -114,6 +116,21 @@
"text": "Количество привлекаемых клиентов будет отображено в договоре так как Яндекс гарантирует поток заинтересованных клиентов. Давайте я ваш контакт передам менеджеру, он обо всём расскажет, хорошо?"
}
],
"not_lpr": [
{
"text": "Понял вас. Тогда извините, что потревожил. До свидания!"
}
],
"closed": [
{
"text": "Я вас поняла. Спасибо, что уделили время! До свидания"
}
],
"where_number": [
{
"text": "А мы ваш номер нашли на Яндекс Картах, вот решили предложить наши услуги. мы официальные партнёры Яндекса. представляем инструмент для автоматизации рекламы на картах, - Яндекс подписку, которая позволяет привлекать новых клиентов. Подробней можно как раз с нашим экспертом обсудить, вам было бы интересно?"
}
],
"what_conditions": [
{
"text": "Более подробно про все условия сможет расскажет менеджер, в любом случае эта бесплатная консультация. Давайте я передам информацию менеджеру и он вам наберет, хорошо?"
......@@ -217,10 +234,13 @@
"letme_40sec": {},
"call_later": {},
"who_are_you": {},
"company": {},
"city_address": {},
"what_price": {},
"send_on_mail": {},
"guarantee": {},
"not_lpr": {},
"where_number": {},
"what_conditions": {},
"what_service": {},
"what_difference": {},
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!