首页 > 应用开发 > IT综合 > 网站在线客服系统源代码基于thinkphp+搭建教程
本文讨论如何使用AWS构建开源在线客服系统源码。我们将从构建一个消息记录器开始,它将接收消息并记录其发送者和内容。然后,我们将创建一个消息回显应用程序,它将回复任何具有相同文本的消息。最后,我们将安排每日消息发送到指定的电话号码。我们将在各种AWS服务中使用SMS。请注意,在本文中,我们只做“ClickOps:”我们通过它们的 Web 界面与这些服务进行交互。实际的生产应用程序将使用版本控制、持续集成/持续交付和基础设施即代码(如 Terraform 或 AWS CloudFormation)来管理代码和服务。但是,交互式AWS 控制台足以练习使用这些服务。
仓库源码:kf.zxkfym.top
Amazon Web Services (AWS) 提供 Lambda,这是一种无服务器计算环境,让程序员无需预置服务器即可运行离散函数。编写和部署 AWS Lambda 函数是一个快速的过程,它们不需要像在EC 等虚拟服务器上运行的应用程序一样的维护。Lambda 函数很便宜;亚马逊通常每百万个请求收取 20 美分(每次执行该函数都算作一个请求),每月前一百万个请求对所有客户无限期免费。AWS提供了多种方法来启动这些廉价、简单的功能,本文介绍了如何使用 AWS Lambda 发送和接收 SMS 消息。
首先,您需要一个AWS账户。此帐户将让您访问所有AW 服务以及免费套餐,让您可以测试大多数产品,甚至可以廉价或免费运行小型应用程序。进入 AWS 账户后,导航到 Lambda 并创建一个新函数。

函数名称可以是对您有意义的任何名称。对于运行时,选择 Python 3.7,这是 Python 3 的最新稳定版本。AWS 使用基于角色的权限运行其所有服务,这是本文范围之外的系统(尽管我们稍后会简要回顾一下)。对于此功能,选择“创建具有基本 Lambda 权限的新角色”,AWS 将为您处理。配置设置后,单击“创建函数”。这将带您进入功能编辑页面。
AWS 提供了一个用于对 Lambda 函数进行编程的在线开发环境。您可以导入库并编写自己的方法。但是,该lambda_handler()函数是触发 Lambda 函数时实际运行的函数。这个主要方法将event和context作为参数。event是一个函数可以访问的大字典,同时context存储有关执行的上下文。我们只需要参考event. 我们的第一个功能非常基本:它只需要电话号码和给定消息的文本并将其写入您的 CloudWatch 日志。
import json
def lambda_handler(event, context):
message = json.loads(event['Records'][0]['Sns']['Message'])
words = message['messageBody']
number = message['originationNumber']
return {
'statusCode': 200,
'body': json.dumps("Phone number: {}\nMessage Text: {}".format(number, words))
}
message是我们从中加载的字典event。我们提取消息正文,即消息的实际文本,以及发起号码,即发送 SMS 的号码。目前,我们只是将此信息转储到 CloudWatch。为了测试这一点,我们可以向与该功能关联的号码发送短信。为此,我们需要激活 AWS Pinpoint。如果你想跳过这部分,我将解释如何使用 Lambda 的内置测试机制来测试这个函数,但是稍后发送消息需要 pinpoint。
现在,您应该可以向您的 lambda 函数发送文本消息了。但是,您可以改为使用 Lambda 的测试功能来模拟这一点。选择“Amazon SNS 主题通知”作为模板并将事件命名为您喜欢的任何名称。如镜像所显示,粘贴以下字符串作为与Message键关联的值。
"{\"originationNumber\": \"+19997771111\",\"messageBody\": \"This is the test message\",\"inboundMessageId\": \"EXAMPLE\",\"previousPublishedMessageId\": \"EXAMPLE\",\"messageKeyword\": \"keyword_example\",\"destinationNumber\": \"+10120120123\"}"
与接收不同,此步骤确实需要 AWS Pinpoint 的早期设置来进行测试。为了演示 SMS 的发送和接收,我们将设置一个简单的 echo 服务:您发送一条消息,它会以相同的文本响应。
import json
import boto3
pinpoint = boto3.client('pinpoint')
def lambda_handler(event, context):
message = json.loads(event['Records'][0]['Sns']['Message'])
pinpoint.send_messages(
ApplicationId='YOUR_PINPOINT_APPLICATION_ID',
MessageRequest={
'Addresses': {
message['originationNumber']: {'ChannelType': 'SMS'}
},
'MessageConfiguration': {
'SMSMessage': {
'Body': message['messageBody'],
'MessageType': 'PROMOTIONAL'
}
}
}
)
导入boto3让我们初始化一个精确的对象来发送消息。该消息将从您之前设置的长代码发送。这需要的唯一配置是粘贴您的 pinpoint 应用程序的 ID。
我们可以使用该系统通过 SMS 构建聊天机器人,例如,虚拟客户支持热线(尽管基于 Web 的聊天在规模上要便宜几个数量级)。该系统的另一个应用是发送预定的文本消息。通过将触发器从 SMS 更改为 CloudWatch 事件,我们可以创建一个应用程序,每天早上向您的老板发送消息,为迟到提供借口。单击左侧菜单上的“CloudWatch Events”选项并配置设置,如图所示。
import json
import boto3
import random
pinpoint = boto3.client('pinpoint')
def lambda_handler(event, context):
messages = ['Sorry! I\'m stuck in traffic.',
'Be there in a bit, I had car trouble this morning',
'My son was sick this morning',
'I stayed up too late working on the contract last night']
pinpoint.send_messages(
ApplicationId='YOUR_PINPOINT_APPLICATION_ID',
MessageRequest={
'Addresses': {
'BOSS_PHONE_NUMBER': {'ChannelType': 'SMS'}
},
'MessageConfiguration': {
'SMSMessage': {
'Body': random.choice(messages),
'MessageType': 'PROMOTIONAL'
}
}
}
)
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70018391/viewspace-2897875/ ,如需转载,请注明出处,否则将追究法律责任。