建设“拨笑话”第1部分-使用Lambda函数与Amazon Connect
三点九(78.18%) 11投票

在这篇文章中,我们来看一下如何向我们的AmazonConnect联系人流添加AWS lambda函数。这将是一系列文章中的第一篇,在这些文章中我们构建了自己的“开玩笑”。服务。这是正确的,我们将使用2019年的技术回到90年代。在这个项目中,我们将看看:

  • 向接触流添加lambda函数以生成动态响应
  • 定义和利用调用变量
  • 使用lambda响应驱动接触流决策和条件逻辑流
  • 实现并触发来自Amazon Connect的出站调用
  • SSML(语音合成标记语言)的基本介绍

如果你还没有看过Amazon Connect,你可以看看我们以前的一些文章。

设计

我们正在构建的将是一个简单的服务,它包含三个主要组件。首先,它将应答传入的呼叫并开始将流记录到CloudWatch日志中。然后,它将调用lambda函数,该函数将返回一个笑话和一个punchline。最后,它将播放两个返回的值,并在它们之间稍作停顿。这一停顿将给来电者一个机会,以处理笑话之前,听到的punchline。

有些人可能还注意到,在发生错误时,有另一个带有提示的路径。

添加lambda函数

所以在我们开始建立联系流程之前,我们需要创建一个新的lambda函数。最快也是最简单的方法是通过AmazonConnect管理控制台。

首先,前往https://console.aws.amazon.com/connect/连接并从列表中选择以前创建的实例。如果您还没有Amazon Connect实例,有关分步说明,请参阅以上文章。

一旦你的总览屏幕打开,点击“联系流程”从左手边。

在主面板上,您应该看到一个标题“AWS Lambda”。继续单击“创建新lambda函数”。

继续,从头开始创建一个新的python 3.7 lambda函数。例如,我要用AmazonConnectJokeGenerator作为名字。

为了让生活更轻松,只需将下面的代码复制到函数的代码编辑器中。下面是python代码,所以一定要保持空间的位置。

导入json导入随机def lambda处理程序(事件,context):resultmap=[“笑话”:“为什么你不能信任一个原子?”“punchline”:“因为它们实际上构成了所有东西。”,{"Joke":"How do fish get high?","PunchLine":" ."“笑话”:“你听说过学校绑架案吗?”“punchline”:“一切都很好。他醒了。“,“笑话”:“葡萄踩上去后怎么说?”,“punchline”:“无。它只会放出一点酒。“笑话”:“为什么泰迪熊不点甜点呢?”,“punchline”:“因为它们总是被塞住的。”,“笑话”:“没有牙齿的熊叫什么?”,“punchline”:“一只橡皮熊。”,“笑话”:“青蛙的车坏了怎么办?”,“punchline”:“它把蟾蜍赶走了。”,“笑话”:“我从来都不想相信我爸爸在偷他公路工人的工作。”,“punchline”:“但是当我回家的时候,所有的标志都在那里。“笑话”:“烤牛肉和豌豆汤有什么区别?”“任何人都能烤牛肉,但没人能尿汤!”}“笑话”:“你听说过断左臂和左腿的人吗?”,“punchline”:“他现在没事了。”,“笑话”:“为什么汉普蒂矮胖喜欢秋天?”“punchline”:“因为他摔倒了。”,{“笑话”:“人们想知道我为什么把我的厕所叫做吉姆”“我这样做是为了说我每天早上第一件事就去吉姆家。”而不是“约翰”。“笑话”:“我在想为什么球会越来越大……”,“punchline”:“然后它击中了我。”,{"Joke":"What do computer snack on?","PunchLine":"Microchips."“笑话”:“为什么牡蛎从不捐钱给慈善机构?”“punchline”:“因为它们是贝类。”,“笑话”:“世界上最高的建筑是什么?”,“punchline”:“库,因为它有最多的故事。“笑话”:“树是如何上网的?”,“punchline”:“他们登录。”,“笑话”:“稻草人为什么不断升职?”“punchline”:“因为他在自己的领域很出色。”,“笑话”:“钱不长在树上,对吧?”,“punchline”:“为什么每家银行都有这么多分行?”}“笑话”:“猪是怎么提早离开派对的?”“punchline”:“因为每个人都认为他是野猪。”,“笑话”:“你为什么不用断了的铅笔写字?”,“punchline”:“没有意义。”,“笑话”:“为什么谷仓这么吵?”“punchline”:“因为所有的牛都有角。”,“笑话”:“你怎么称呼一个系着手表的腰带的人?”,“punchline”:“时间的腰部。”,“笑话”:“老师和火车有什么区别?”“punchline”:“一个说,吐出你的口香糖,另一个说,Choo Choo Choo。“,“笑话”:“看门人从壁橱里跳出来后喊什么?”,“punchline”:“供应品!”}“笑话”:“一美元怎么能买到四套西装?”,“punchline”:“购买一副牌。”,“笑话”:“瓜子为什么不结婚呢?”“punchline”:“因为它们是香瓜。”,“笑话”:“你对一个脖子上挂着跳线走进酒吧的醉汉说什么?”,“punchline”:“您可以留下。不要试图开始任何事情。“笑话”:“一个人被一罐可乐打中了脑袋。”,“潘奇林”:“谢天谢地,那是一种软饮料。”,“笑话”:“猫和复杂句子有什么区别?”“punchline”:“猫爪末端有爪。复合句在句尾有停顿。“]返回random.choice(resultmap)

这是一个漂亮的脚本,从“resultmap”中选择一个随机字符串映射名单。每个映射都由两个字符串组成,“笑话”和“punchline”。通过将这些对象作为lambda响应传递,它们将作为“外部”提供给接触流。变量。要更深入地解释接触流变量,您可以参考AWS Connect开发人员指南。在这里。一旦你复制了代码,保存Lambda函数并确保它正确运行。

浏览回您的Amazon Connect控制台,你现在应该看到你“AmazonConnectJokeGenerator”列表中的Lambda函数。只需选择它并单击“添加lambda函数”。此进程将授予AmazonConnect调用lambda函数的正确权限。

建立联系流程——取笑笑话

既然我们已经编写了lambda并应用了正确的权限,是时候建立接触流了。继续浏览“概述”并单击“以管理员身份登录”按钮

正如我们在以前的文章中所做的那样,继续打开“接触流”“路由”屏幕菜单。单击“创建联系人流”按钮并给新流程命名为“dialajoke”。

首先,我们要继续并开始记录联系人流日志。这将有助于我们以后解决出现的问题。继续拖动“设置日志记录行为”从“集合”中走出来菜单,进入接触流。检查步骤属性并确保“启用”已选定。确保在“入口点”之间创建连接器和“设置日志记录行为”步骤。

下一步,拖动“调用AWS lambda函数”从“整合”开始菜单,进入接触流。从前面的步骤创建一个连接。下一步,打开属性窗口并选择“AmazonConnectJokeGenerator”下拉列表中的lambda。

建立联系流程——开玩笑

下一步是给来电者开玩笑。这可以通过引用lambda函数返回的外部变量来实现。从我们的源代码,我们有两个变量可以参考,“笑话”和“punchline”。拖动“播放提示”从“互动”开始菜单到联系人流并将其连接到“成功”上一步的输出。根据它的性质,我们要选择“文本到语音转换(即席)”。从那里,选择“动态输入”单选按钮并选择“外部”从类型下拉列表。最后,输入“笑话”作为属性并点击保存。

没有什么比在你有机会思考之前讲的笑话更糟糕的了。所以我们要在讲笑话和回答之间加上一个停顿。然而,Amazon Connect没有“暂停”和“延迟”我们可以使用的步骤。为了解决这个问题,我们可以添加另一个“播放提示”步骤,并使用一些SSML来获得相同的结果。SSML(语音合成标记语言)是一种我们可以控制AmazonPolly引擎如何使用单词/句子的方法。添加“播放提示”步骤,打开属性,然后再次选择“文本到语音转换(即席)”。在“输入文本”中文本框,继续添加以下SSML。 。这只会增加2秒钟的停顿。在退出“属性”窗口之前,确保你改变了" interpretation as"下拉SSML。

最后,继续创建最后一个“播放提示”step and repeat the process used to play the Joke.一步一步重复用来开玩笑的过程。只是这次,确保你定义了“笑点”作为要使用的属性。

建立联系流程-处理错误并结束通话

在我们开始发布新的联系流程之前,我们需要关闭所有开放的通道。如果任何可能的结果导致未处理的呼叫,AmazonConnect无法发布联系人流。为了实现这一目标,只需创建一个新的“播放提示”从“错误”开始执行并建立连接“调用AWS Lambda函数”的结果步骤。在“文本到语音(Ad hoc)”下定义一个简单的错误消息并保存它。

最后但并非最不重要,我们要记住完成后挂断电话。继续拖动“断开/挂断”进入网格并连接最后两个“播放提示”对它。

在这个阶段,您应该能够选择“保存并发布”从下拉菜单。

结论

的指示bet way官网 ,您可以将入站号码指向新的“拨打笑话服务”以及你的起跑。人们现在可以拨打您的直接入站号码,Amazon Connect会给他们讲个笑话。在下一篇文章中,我们将向新服务添加一些附加功能,并研究一些其他日志记录选项。

类别:
亚马逊网络服务云基础设施
标签:

留下答复