Webhooks语音秘书



最新趋势之一是在线聊天机器人。 但是如何处理那些离线的客户呢? 很大一部分人喜欢打电话。 他们需要大量的操作员,或者需要自动化语音工作的解决方案。 我们提供了一种解决方案,以减少工作量和成本(甚至几乎不加载您的程序员)。

如何快速轻松地参考您的客户群来编程任何语音菜单,自动信息,秘书机器人?

Spoiler:一切都在webhooks上实现,PHP提供了一个示例。

我们讨论下削减。

什么,为什么?


例如,您有送货服务或拥有自己物流服务的在线商店。 一些客户打电话来了解他们如何处理其包装/产品,并且可以很容易地实现自动化。 类似地-出租车的地理位置,仪表的数据收集,通常是您可以提供给客户的任何单独的在线信息,而不必花费时间在现场操作员的“帮助”时间上。

自动化这一过程非常简单,我们将在下面描述一个示例。 而且,所有这些都可以完全免费地完成。

为什么不输入星号?


当然,所有操作都可以在Asterisk上完成,但是在这里,除了开发人员之外,还需要管理员,并且要了解语音网络的安全性(因为它们特别喜欢破解)。

我们考虑针对该问题的解决方案的最简单实现-在webhooks上。

方法清单


对于工作,我们只需要2种新方法,但是每种方法都提供了很多机会,最重要的是-无限循环。 由于有了这些循环,您可以获得任何深度的语音菜单和任何主题的线人。

主要方法:


  • NOTIFY_START-呼叫到集团电话的开始
  • NOTIFY_IVR-订户对指定操作的响应

API说明中提供了复制粘贴方法的详细说明

对于NOTIFY_START和NOTIFY_IVR请求,您可以通过发送以下选项之一来“即时”更改当前呼叫的方案:







实际上,客户呼叫并听了问候语,然后拨打一个特定的号码(例如订单号),我们用他所拨打的号码发送一个通知,订户的脚本检查数据库并向我们发送对该通知的响应。 该响应可能包含语音文件的ID或标准语音消息的变体。

我们有一个用于复制数字的标准系统,因此无需记录初步的语音消息,也就是说,所需的通知是从数据库中获取的,并且由机器人将其复制为数字。 或者,您最多可以创建100种模板语音通知的变体,并根据客户的请求进行发送(您的商品有现货,您可以每天从上午9点到晚上10点接收商品,周日除外,您的包裹在取货点-Belorusskaya metro) 。

最低实施


为了使秘书能够回答,您至少需要一个电话号码和一个电话交换机。 还值得提前下载或自动阅读秘书的答案。

自订




  1. 只需单击三下即可为我们的任务配置免费的PBX (选择所需的员工人数,以后可以配置语音菜单)。
  2. 可以在俄罗斯联邦的任何大城市或世界上90个国家/地区中连接用于自动电话交换的电话号码 。 检查文件后立即包含该号码(如果您需要该地区的文件)。 您也可以免费连接一个号码。
  3. 要阅读语音问候,请转到“来电和语音菜单”部分,然后选择更合适的选项。 您可以上传文件,也可以只打印文本,然后机器人会自动读取。 有16种语言和每种语言的几种声音(英语14票)。 您的个人帐户最多可以保存100个语音问候。



PHP示例


为了展示不同的可能性,我们创建了4个在PHP中使用IVR的示例。

  1. 系统指示CallerID的最后3位数字(使用数字上的数据并发音为数字的示例)
  2. 用户输入DTMF的出生日期,系统会说出其DR的天数。 (使用DTMF和发音数字)
  3. 无休止的多级菜单:用户可以单击数字并转到下一个或上一个菜单(有关如何通过一个简单的周期制作任意数量的语音菜单的示例)。
  4. 获得平衡的授权示例(对生活中的许多示例都有用)。

前三个示例在Github上可用。 在该示例中,所有必需的元素均已阐明,您只需要用线程替换文件(您必须预加载或读取PBX)。

任务4 :用户说出语音问候语,并要求输入他们的识别号码,输入该号码后,系统会说出余额,使用热门列表中的短语说再见,然后结束通话。

我们给出了描述任务的代码示例。

PHP代码

$request = new Request(); $notify = self::getEvent([AbstractNotify::EVENT_START, AbstractNotify::EVENT_IVR]); if (!$notify) { return; } switch ($notify->event){ case AbstractNotify::EVENT_START: $request ->setIvrPlay(self::INFO_FILE_ID) ->setWaitDtmf(TIMEOUT , ATTEMPTS, MAXDIGITS, DTMF_NAME, DEFAULT_BEHAVIOUR); break; case AbstractNotify::EVENT_IVR: if (!empty($notify->wait_dtmf->digits)) { $balance = getBalance($notify->wait_dtmf->digits); $request->setIvrSayNumber($balance, 'en'); } elseif (!empty($notify->ivr_saynumber)) { $request->setIvrSayPopular(POPULAR_PHRASE_NUM, 'en'); } else { $request->setHangup(); } } $request->send(); 

我们调查是否需要进一步扩展方法的功能并收集反馈,欢迎提出评论中的建议。 此外,还有许多其他的webhook和api方法可用。 网站上有完整列表。

Source: https://habr.com/ru/post/zh-CN448178/


All Articles