{
    "componentChunkName": "component---src-templates-doc-page-js",
    "path": "/docs/ru/telephony/bargein/",
    "result": {"data":{"site":{"siteMetadata":{"title":"Gatsby-doc-engine"}},"markdownRemark":{"id":"d7f7a0ba-fba8-5ef2-a0e5-9855d15bc38d","excerpt":"Прерывание фразы бота?> Вы можете определить прерывание фразы бота клиентом в сценарии. Для этого в сценарии используйте метод  . Фраза бота может быть прервана…","html":"<h1>Прерывание фразы бота</h1>\n<hr>\n<p class='warn'>Вы можете определить прерывание фразы бота клиентом в сценарии. Для этого в сценарии используйте метод  <code class=\"language-text\">$dialer.bargeInResponse()</code>.</p>\n<p>Фраза бота может быть прервана сразу же при появлении речи клиента или после того, как бот закончит свою реплику.</p>\n</br>\n<h3>Параметры прерывания</h3>\n</br>\n<div class=\"gatsby-highlight\" data-language=\"js\"><pre class=\"language-js\"><code class=\"language-js\"> $dialer<span class=\"token punctuation\">.</span><span class=\"token function\">bargeInResponse</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">{</span>\r\n    <span class=\"token literal-property property\">bargeIn</span><span class=\"token operator\">:</span><span class=\"token string\">\"phrase\"</span><span class=\"token punctuation\">,</span>         <span class=\"token comment\">//режим прерывания</span>\r\n    <span class=\"token literal-property property\">bargeInTrigger</span><span class=\"token operator\">:</span> <span class=\"token string\">\"final\"</span><span class=\"token punctuation\">,</span>\r\n    <span class=\"token literal-property property\">noInterruptTime</span><span class=\"token operator\">:</span> <span class=\"token number\">0</span>\r\n<span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></code></pre></div>\n</br>\n<ul>\n<li><code class=\"language-text\">bargeIn</code> — режим прерывания. Принимает значения:\n<ul>\n<li><code class=\"language-text\">disabled</code> — прерывание отключено.</li>\n<li><code class=\"language-text\">forced</code> — при перебивании фразы бота, он не договаривает реплику до конца, а сразу прерывается.</li>\n<li><code class=\"language-text\">phrase</code> — при перебивании фразы бота, он договаривает реплику до конца, а потом прерывается.</li>\n</ul>\n</li>\n<li><code class=\"language-text\">bargeInTrigger</code> — событие, по которому бот определяет, что абонент пытается его перебить. Принимает значения:\n<ul>\n<li><code class=\"language-text\">interim</code> — прерывание с промежуточными результатами распознавания.</li>\n<li><code class=\"language-text\">final</code> — прерывание с финальными результатами распознавания.</li>\n</ul>\n</li>\n<li><code class=\"language-text\">noInterruptTime</code> — время в миллисекундах от начала ответа бота, в течение которого бот не прервётся при срабатывании <code class=\"language-text\">bargeInTrigger</code>. Если <code class=\"language-text\">bargeInTrigger</code> сработает во время данного интервала, то бот прервётся сразу после его окончания. При <code class=\"language-text\">noInterruptTime: 0</code> бот прервётся сразу.</li>\n</ul>\n<p>Использование в сценарии:</p>\n<div class=\"gatsby-highlight\" data-language=\"sc\"><pre class=\"language-sc\"><code class=\"language-sc\"><span class=\"token keyword\">state:</span> Yes\r\n    <span class=\"token storageType\">q:</span> * ($yes/могу/сейчас [позову]/минут*/секунд*/подожди*) * || fromState = \"..\"<span class=\"token entityNameClass\">, onlyThisState =</span> true\r\n    <span class=\"token variableParameter\">script:</span>\r\n        $dialer.bargeInResponse({\r\n            bargeIn:\"phrase\",         //режим прерывания\r\n            bargeInTrigger: \"final\",\r\n            noInterruptTime: 0\r\n})\r\n    а: Хорошо, я перезвоню вам попозже.</code></pre></div>\n</br>\n<h3>Обработка места прерывания</h3>\n<p class='warn'>Вы можете в сценарии задать различные реакции бота в зависимости от фразы, на которой его прервал клиент.</p>\n<p>Если ответ бота зависит от места, на котором его прервали, для каждой реплики указывается путь до стейта. При перебивании переход в указанный стейт будет совершен перед анализом намерения клиента. Если стейт для перехода не был указан, то анализ фразы перебивания происходит в рамках текущего контекста.</p>\n</br>\n<h4>Синтаксис</h4>\n<div class=\"gatsby-highlight\" data-language=\"sc\"><pre class=\"language-sc\"><code class=\"language-sc\"><span class=\"token variableParameter\">a:</span> фраза бота || bargeInTransition = /path1<span class=\"token entityNameClass\">, bargeInLabel =</span> \"phrase\"\r\n<span class=\"token variableParameter\">audio:</span> https://someurl.ru || bargeInTransition = /path2<span class=\"token entityNameClass\">, bargeInLabel =</span> \"audio\"</code></pre></div>\n<ul>\n<li><code class=\"language-text\">bargeInTransition</code> — путь до стейта, куда будет перенаправлен бот при перебивании. Путь задается в соответствии с правилами для тега <a href=\"/1.10.3/docs/ru/JAICP_DSL/tags/reaction_tags/go\"><code class=\"language-text\">go</code></a>.</li>\n<li><code class=\"language-text\">bargeInLabel</code> — метка, принимает значения <code class=\"language-text\">string</code>. Метка будет установлена и доступна из сценария при срабатывании <code class=\"language-text\">bargeIn</code>.</li>\n</ul>\n<p>Например:</p>\n<div class=\"gatsby-highlight\" data-language=\"sc\"><pre class=\"language-sc\"><code class=\"language-sc\">  <span class=\"token keyword\">state:</span> Offer\r\n    <span class=\"token storageType\">q:</span> *start\r\n    <span class=\"token variableParameter\">a:</span> У меня для вас особое предложение || bargeInTransition = /Offer/OfferNotDone<span class=\"token entityNameClass\">, bargeInLabel =</span> \"first_phrase\"\r\n    <span class=\"token variableParameter\">a:</span> Только сегодня и только у нас || bargeInTransition = /Offer/OfferNotDone<span class=\"token entityNameClass\">, bargeInLabel =</span> \"second_phrase\"\r\n    <span class=\"token variableParameter\">a:</span> Второй продукт в подарок || bargeInTransition = /OfferDone<span class=\"token entityNameClass\">, bargeInLabel =</span> \"third_phrase\"\r\n    <span class=\"token variableParameter\">go:</span> OfferDone</code></pre></div>\n<p>В данном примере одна фраза бота разбита на три и для каждой определен путь перехода.</p>\n</br>\n<h4>Примеры использования</h4>\n<ol>\n<li>Рассмотрим сценарий обработки места прерывания:</li>\n</ol>\n<div class=\"gatsby-highlight\" data-language=\"sc\"><pre class=\"language-sc\"><code class=\"language-sc\"><span class=\"token keyword\">theme:</span> /\r\n  <span class=\"token keyword\">state:</span> Offer\r\n    <span class=\"token storageType\">q:</span> *start\r\n    <span class=\"token variableParameter\">a:</span> У меня для вас особое предложение || bargeInTransition = /Offer/OfferNotDone<span class=\"token entityNameClass\">, bargeInLabel =</span> \"first_phrase\"\r\n    <span class=\"token variableParameter\">a:</span> Только сегодня и только у нас || bargeInTransition = /Offer/OfferNotDone<span class=\"token entityNameClass\">, bargeInLabel =</span> \"second_phrase\"\r\n    <span class=\"token variableParameter\">a:</span> Второй товар в подарок || bargeInTransition = /OfferDone<span class=\"token entityNameClass\">, bargeInLabel =</span> \"third_phrase\"\r\n    <span class=\"token variableParameter\">go:</span> OfferDone\r\n    <span class=\"token variableParameter\">script:</span>\r\n      $dialer.bargeInResponse({          <span class=\"token comment\">// метод прерывания указывается сразу для всех фраз</span>\r\n          bargeIn: \"forced\",\r\n          bargeInTrigger: \"interim\",\r\n          noInterruptTime: 0             <span class=\"token comment\">// бота можно перебить в любой момент фразы</span>\r\n});\r\n\r\n    <span class=\"token keyword\">state:</span> OfferNotDone                  <span class=\"token comment\">// стейт для перехода первой и второй фраз</span>\r\n      <span class=\"token keyword\">state:</span>\r\n        <span class=\"token storageType\">q:</span> не хочу\r\n        <span class=\"token variableParameter\">a:</span> Подождите, вы же еще не знаете о чем речь!\r\n        <span class=\"token variableParameter\">a:</span> Это уникальное предложение!\r\n        <span class=\"token variableParameter\">go:</span> /Offer/OfferDone\r\n\r\n      <span class=\"token keyword\">state:</span>\r\n        <span class=\"token storageType\">event:</span> noMatch\r\n        <span class=\"token variableParameter\">a:</span> Совершенно бесплатно!\r\n        <span class=\"token variableParameter\">go:</span> /Offer/OfferDone\r\n\r\n      <span class=\"token keyword\">state:</span>\r\n        <span class=\"token storageType\">event:</span> speechNotRecognized\r\n        <span class=\"token variableParameter\">a:</span> я вас не слышу\r\n\r\n    <span class=\"token keyword\">state:</span> OfferDone                      <span class=\"token comment\">// стейт для перехода третьей фразы</span>\r\n       <span class=\"token keyword\">state:</span>\r\n        <span class=\"token storageType\">q:</span> не хочу\r\n        <span class=\"token variableParameter\">a:</span> Ну ладно, как хочешь!\r\n\r\n       <span class=\"token keyword\">state:</span>\r\n        <span class=\"token storageType\">q:</span> хорошо\r\n        <span class=\"token variableParameter\">a:</span> Хорошо, сейчас заверну!\r\n\r\n       <span class=\"token keyword\">state:</span>\r\n        <span class=\"token storageType\">event:</span> noMatch\r\n        <span class=\"token variableParameter\">a:</span> То есть согласен?\r\n\r\n       <span class=\"token keyword\">state:</span>\r\n        <span class=\"token storageType\">event:</span> speechNotRecognized\r\n        <span class=\"token variableParameter\">a:</span> я вас не слышу</code></pre></div>\n<p>В начале сценария мы задали метод прерывания <code class=\"language-text\">$dialer.bargeInResponse()</code>. Обратите внимание, что параметр <code class=\"language-text\">noInterruptTime = 0</code>, то есть бота можно перебить в любой момент фразы.</p>\n<p class='warn'>Для вариативности сценария мы использовали вложенные стейты. Бот при перебивании переходит в указанный стейт, далее согласно намерению пользователя сценарий направляется в один из вложенных стейтов.</p>\n</br>\n<ol start=\"2\">\n<li>Рассмоторим сценарий отладки сценария бота с прерыванием:</li>\n</ol>\n<div class=\"gatsby-highlight\" data-language=\"sc\"><pre class=\"language-sc\"><code class=\"language-sc\"><span class=\"token keyword\">state:</span> OfferSwitch\r\n    <span class=\"token storageType\">q!:</span> switch offer\r\n    <span class=\"token variableParameter\">a:</span> first statement  || bargeInTransition = /OfferSwitch/RepeatTrans/First<span class=\"token entityNameClass\">, bargeInLabel =</span> \"first\"\r\n    <span class=\"token variableParameter\">a:</span> second statement || bargeInTransition = /OfferSwitch/RepeatTrans/Second<span class=\"token entityNameClass\">, bargeInLabel =</span> \"second\"\r\n    <span class=\"token variableParameter\">a:</span> third statement  || bargeInTransition = /OfferSwitch/RepeatTrans/RepeatLast<span class=\"token entityNameClass\">, bargeInLabel =</span> \"third\"\r\n    <span class=\"token keyword\">state:</span> RepeatRouter\r\n        <span class=\"token storageType\">q:</span> repeat\r\n        <span class=\"token variableParameter\">go!:</span> <span class=\"token constantCharacter\">{{$dialer.getBargeInTransition()}}</span>\r\n  <span class=\"token keyword\">state:</span> RepeatTrans\r\n      <span class=\"token keyword\">state:</span> First\r\n          <span class=\"token variableParameter\">a:</span> isInterrupted = <span class=\"token constantCharacter\">{{ $dialer.isBargeInInterrupted() }}</span> label = <span class=\"token constantCharacter\">{{ $dialer.getBargeInLabel() }}</span> trans = <span class=\"token constantCharacter\">{{ $dialer.getBargeInTransition() }}</span>\r\n      <span class=\"token keyword\">state:</span> Second\r\n          <span class=\"token variableParameter\">a:</span> isInterrupted = <span class=\"token constantCharacter\">{{ $dialer.isBargeInInterrupted() }}</span> label = <span class=\"token constantCharacter\">{{ $dialer.getBargeInLabel() }}</span> trans = <span class=\"token constantCharacter\">{{ $dialer.getBargeInTransition() }}</span>\r\n      <span class=\"token keyword\">state:</span> RepeatLast\r\n          <span class=\"token variableParameter\">a:</span> isInterrupted = <span class=\"token constantCharacter\">{{ $dialer.isBargeInInterrupted() }}</span> label = <span class=\"token constantCharacter\">{{ $dialer.getBargeInLabel() }}</span> trans = <span class=\"token constantCharacter\">{{ $dialer.getBargeInTransition() }}</span></code></pre></div>\n<p>В данном сценарии в ответе бота будут выведены параметры перехода. Например, при попадании в стейт <code class=\"language-text\">First</code> ответ бота:</p>\n<div class=\"gatsby-highlight\" data-language=\"sc\"><pre class=\"language-sc\"><code class=\"language-sc\">isInterrupted = true  label = first  trans = /OfferSwitch/RepeatTrans/First</code></pre></div>\n<p>Функция <code class=\"language-text\">$dialer.isBargeInInterrupted()</code> позволяет узнать, была ли прервана реплика бота. Результатом функции будет значение <code class=\"language-text\">true</code> или <code class=\"language-text\">false</code>.</p>\n<p>Если в сценарии флаг <code class=\"language-text\">bargeInTransition</code> не установлен, а используется только флаг <code class=\"language-text\">bargeInLabel</code>, то с помощью <code class=\"language-text\">$dialer.isBargeInInterrupted()</code> можно проверить, был ли прерван бот или нет.</p>","frontmatter":{"title":"","description":null},"headings":[{"value":"Прерывание фразы бота"}]}},"pageContext":{"slug":"/docs/ru/telephony/bargein/","previous":{"fields":{"slug":"/docs/ru/telephony/background_noise/"},"frontmatter":{"title":"","description":null}},"next":{"fields":{"slug":"/docs/ru/syntax_markdown/tags/"},"frontmatter":{"title":"","description":null}}}},
    "staticQueryHashes": ["1209419333"]}