本项目是专门为 Slack 聊天机器人定制的模板服务器。 完整的源代码下载在 Github https://github.com/PerfectServers/SlackBot 在本项目模板中,一个聊天机器人可以加入授权频道,读取频道内所有用户发送的 "曲奇" 并记录在案,而且可以直接答复用户的有关曲奇饼干的问题。
在您决定编译、测试或者部署您自己的基于 Perfect 软件框架体系的聊天机器人之前,以下基础知识⚠️不可或缺⚠️:
请使用下列命令复制本项目:
- $ git clone https: //github.com/PerfectServers/SlackBot.git
本工程根目录之下有一个
文件,所有内容都是必须填写的配置项:
- config.json.sample
- {
- "token":"xoxb-您的Slack应用程序通行证-TOKENXXXXXXXXXXXXXXXXX",
- "bot" :"聊天机器人名称",
- "bot_id":"聊天机器人编号",
- "client_id":"XXXXXXXX.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需要监听的频道"
- }}
上述文件的所有详细编写说明请参考本文后续内容。
(监听频道消息); (2)
- message.channels
(实现即时通信); (3)
- message.im
(增加表情); (4)
- reaction_added
(删除表情)。
- reaction_removed
,而且接口程序入口点
- myhost.com
配置为
- message_uri
,那么请将该 url 设置为
- /v1/msg
。⚠️注意⚠️目前 Slack 仅支持 HTTPS 即 443 端口。
- https://myhost.com/v1/msg
如果所有工作完成,请将上述配置信息逐一输入到您的
文件,其中
- config.json
指的是
- token
(聊天机器人授权访问通行证)
- Bot User OAuth Access Token
Slack 聊天机器人需要在编程时使用自己的编号(不是屏幕上显示的名称)。要获得该编号需要一定技巧,请仔细阅读以下说明:
Slack API page
- users.list
- Test Method
,可以看到一个 JSON 数据结构
- (open raw response)
该操作时可选项,但是出于安全角度来说,还是推荐完成的。
虽然相信许多聊天机器人开发商都希望其机器人产品能够加入的频道或者私聊群越多越好,但是您可能希望将聊天机器人县治在某几个特定的频道或者群聊中。
为了实现这个目标,请采用下列操作:
Slack API page
- channels.list
- Test Method
查看返回的 JSON 数据。
- (open raw response)
/
- id
),并将其填写到您的
- name
文件中。
- config.json
注意 如果您希望您的聊天机器人能够访问所有频道,则直接将下列代码粘贴到您的源程序内即可:
- Curl("https://slack.com/api/channels.list?token=\(token)") { retin
- do{
- guardletb = ret,letinfo =tryb.jsonDecode()as[String:Any],letok = info["ok"]asBool,letchannels = info["channels"]as[Any]else{
- Print("channel parse::ok(fault)")returnnil
- }//end guardguard ok, channels.count >0 else{
- Print("channel parse::ok(\(ok))")returnnil
- }//endchannels.forEach { channelin
- letch = channelas[String: Any] ?? [:]
- guardletid = ch["id"]asString,letname = ch["name"]asStringelse{return}//end guard
- // CAUTION: Append all channels into the cacheglobal.channels[id] = name
- }//next}catch(leterr) {
- Print("parseChannels::\(err)")returnnil
- }// end do }//end curl
在此推荐使用 Perfect Assistant 软件助手完成所有编译和部署的自动化操作。
但是,如果您使用的不是亚马逊 AWS 弹性计算 EC2 或者谷歌云,那么您需要详细了解整个安装部署的详细步骤。工程根目录下有一个安装脚本可供参考
:
- install.sh.sample
编译为正式发行版本
- $ swift build -c release
和
- config.service
文件上传到服务器。其中
- config.json
模板文件可参考本工程根目录下的范例。
- config.service
文件并保证其中所有的变量,特别时各个路径,比如证书路径和数据库都完全符合实际部署。
- config.json
以匹配所有路径。
- config.service
将您的新应用程序注册为 Linux 系统服务,这样服务器在重启后就能自动以管理员方式启动。
- $ sudo systemctl enable config.service
命令行单独启动目标服务程序(假设编译后的服务命令行为
- $ sudo systemctl restart slackbot
)
- slackbot
如果没有 Perfect 软件助手,则上述所有步骤一样是有一些难度的,因此操作时需要特别小心。请仔细阅读下列样本文件范例:
- [Unit]
- Description=您的聊天机器人
- [Service]
- Type=simple
- WorkingDirectory=/var/opt
- ExecStart=/path/to/yourApp/PerfectTemplate
- Restart=always
- PIDFile=/var/run/yourSlackBotApp.pid
- Environment="LD_LIBRARY_PATH=/usr/lib:/usr/local/lib:/usr/local/lib/swift"
- [Install]
- WantedBy=multi-user.target
- #安装部署脚本范例#假设您的服务器应用程序名为`slackbot`#请保证您的服务器上已经提前安装了Swift运行环境,比如#LD_LIBRARY_PATH = "/usr/lib/yourSwiftInstalationPath"#变量定义如下:RPO = slackbot TGZ = /tmp/$RPO.tgz SVC = $RPO.service CFG = $RPO.json APP = /tmp/app.tgz SERVER = yoursshLoginUserName@yourhost.yourdomain LOCALVM = your.local.ubuntu.virtual.machine#首先把源代码打包并传输到虚拟机上tar czvf $TGZ Package.swift Sources scp $TGZ $LOCALVM: /tmp
- # 通过虚拟机进行编译
- ssh $LOCALVM "cd /tmp;
- rm - rf $RPO;
- mkdir $RPO;
- cd $RPO;
- tar xzvf $TGZ;
- swift build - c release;
- cd.build / release;
- tar czvf $APP PerfectTemplate * .so "
- # 然后再从虚拟机上取回编译好的二进制文件并上传至生产服务器
- scp $LOCALVM:$APP $APP
- scp $APP $SERVER:$APP
- scp $SVC $SERVER:/tmp/$SVC
- scp $CFG $SERVER:/tmp/$CFG
- # 在生产服务器上执行安装并将新编应用程序注册为Linux操作系统服务
- ssh $SERVER "cd / opt;
- sudo - S rm - rf $RPO;
- sudo - S mkdir $RPO;
- cd $RPO;
- sudo - S tar xzvf $APP;
- sudo - S cp / tmp / $SVC.;
- sudo - S cp / tmp / $CFG.;
- sudo - S systemctl disable $RPO;
- sudo - S systemctl enable / opt / $RPO / $SVC;
- sudo - S systemctl start $RPO;
- sudo - S systemctl status $RPO ""
一旦重启服务器后,请回到 Slack 应用程序的控制台网页确认上述服务器并激活所有功能,特别时 OAuth 配置认证页面:
- Request URL
关于本项目更多内容,请参考 perfect.org.
来源: http://blog.csdn.net/rockfordwei/article/details/70164950