首页 存档 技术 查看内容

基于 Perfect 用 Swift 语言编写 Slack 聊天机器人

2018-3-30 13:00 |来自: 互联网 342 0

摘要: 本项目是专门为Slack聊天机器人定制的模板服务器。完整的源代码下载在Github :https://github.com/PerfectServers/SlackBot在本项目模板中,一个聊天机器人可以加入授权频道,读取频道内所有用户发送的“曲奇”并记 ...

本项目是专门为Slack聊天机器人定制的模板服务器。
完整的源代码下载在Github :https://github.com/PerfectServers/SlackBot
在本项目模板中,一个聊天机器人可以加入授权频道,读取频道内所有用户发送的“曲奇”并记录在案,而且可以直接答复用户的有关曲奇饼干的问题。

预备知识

在您决定编译、测试或者部署您自己的基于Perfect软件框架体系的聊天机器人之前,以下基础知识不可或缺:

  • Perfect 基础

  • Slack API 在线函数接口参考

  • 提前准备好具有有效域名(FQDN)并由认证机构颁发证书的服务器

  • Perfect 软件助手 可以用来编译和测试。这是可选的,但是如果您没有安装助手,则建议您自行在本地计算机上准备一个Ubuntu 16.04 LTS 虚拟服务器或者Docker镜像并自行安装好Swift 3.0以上版本。

快速上手

第一步:复制本项目

请使用下列命令复制本项目:

$ git clone https://github.com/PerfectServers/SlackBot.git

本工程根目录之下有一个 config.json.sample 文件,所有内容都是必须填写的配置项:

{
"token": "xoxb-您的Slack应用程序通行证-TOKEN**********XX",
"bot" : "聊天机器人名称",
"bot_id": "聊天机器人编号",
"client_id": "****XX.YYYYYYYYYY您的应用程序编号",
"client_secret": "应用程序密码",
"verify_token": "反向验证通行证,即Slack在访问您的服务器是验证一下究竟是不是Slack发来的请求",
"oauth_uri": "/v1/oauth接口函数地址",
"message_uri": "/v1/msg接口函数地址",
"confirm_uri": "/v1/confirm接口函数地址",
"serverName": "yourhost.yourcompany.domain您的服务器完整域名",
"cerPath": "/opt/certificates/yourcertificate.crt您的自签证书和第三方认证证书的合并文件",
"keyPath": "/opt/certificates/yourcertificate.key您的证书私有钥匙文件",
"dbPath": "/var/opt/yoursqlite.db数据库文件",
"runAs": "yourUserName您的服务器普通用户名",
"port": 443, "channels": {
"channel1_id": "channel1_name需要禁用词语的频道",
"channel2_id": "channel2_name需要禁用词语的频道" } }

上述文件的所有详细编写说明请参考本文后续内容。

第二步:到您的Slack团队上自行注册一个应用程序

  • 在您的 Slack API 网页上,选择 “Your Apps”创建新的应用程序

  • 聊天机器人用户:为您的机器人起名字并应用到配置:

  • 增加权限。在本案例中,权限至少包括”bot user”(聊天机器人)、”channels:history”(公共频道历史)、”channels.read”(公共频道可读)、”channels.write”(公共频道可写)和 “chart:write:bot” (机器人可以发送聊天信息)。

  • 订阅事件:本案例需要至少以下事件在Slack应用程序控制台中进行订阅操作:(1) message.channels(禁用词语频道消息); (2) message.im(实现即时通信); (3) reaction_added(增加表情); (4) reaction_removed(删除表情)。

  • 通过设置请求URL激活上述事件订阅。比如您的聊天机器人所在主机域名为myhost.com,而且接口程序入口点 message_uri 配置为 /v1/msg,那么请将该url设置为https://myhost.com/v1/msg。注意目前Slack仅支持HTTPS即443端口。

  • 将您的应用程序安装到您的团队中去。

如果所有工作完成,请将上述配置信息逐一输入到您的config.json文件,其中 token指的是 Bot User OAuth Access Token(聊天机器人授权访问通行证)

第三步:获取聊天机器人编号(概念有难度,操作须谨慎)

Slack 聊天机器人需要在编程时使用自己的编号(不是屏幕上显示的名称)。要获得该编号需要一定技巧,请仔细阅读以下说明:

  • 打开浏览器导航至 users.list Slack API page

  • 为您的应用程序选择适合的通行证并点击在线测试 Test Method

  • 如果成功,则点击打开原始响应链接(open raw response),可以看到一个JSON数据结构

  • 在JSON字符串中搜索您的聊天机器人名称

  • 将找到的聊天机器人编号拷贝到前文配置中

第四步:选择待监控频道(概念有难度,操作须谨慎)

该操作时可选项,但是出于安全角度来说,还是推荐完成的。

虽然相信许多聊天机器人开发商都希望其机器人产品能够加入的频道或者私聊群越多越好,但是您可能希望将聊天机器人县治在某几个特定的频道或者群聊中。

为了实现这个目标,请采用下列操作:

  • 打开浏览器并导航至 channels.list Slack API page

  • 选择团队开发通行证并点击测试方法 Test Method

  • 如果查询成功,请点击原始响应数据 (open raw response) 查看返回的JSON数据。

  • 选择需要监控的频道并记录待监控频道的名称和代码(id / name),并将其填写到您的config.json 文件中。

注意 如果您希望您的聊天机器人能够访问所有频道,则直接将下列代码粘贴到您的源程序内即可:

Curl("https://slack.com/api/channels.list?token=\(token)") { ret in
 do {
  guard let b = ret,
let info = try b.jsonDecode() as? [String:Any],
let ok = info["ok"] as? Bool,
let channels = info["channels"] as? [Any] else { Print("channel parse::ok(fault)")
return nil }//end guard guard ok, channels.count
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

相关分类

返回顶部