Slack与环信移动客服集成

简介

什么是Slack

Slack是一个团队沟通的平台,在这里你可以群聊、单聊、甚至打电话。还可以通过简单的拖动,进行文件分享。甚至可以跟Github、Travis、Twitter等等工具和网站进行集成。如果这还不能满足需求,也可以定制自己的APP。Slack也支持强大的搜索功能,所有的消息、通知、文件都可以搜索。

Slack App & Slack Bot

Slack Apps是能提高工作效率的工具,这里已经有很多很好的工具,比如To-do bot,跟他聊天便可以轻松的定制计划任务,在指定的时间做你要求他做的事情。
当你添加To-do bot这个APP之后,你就可与To-do bot的机器人todobot聊天了,在左侧的DIRECT MESSAGES中找到todobot,如果没找到,点击加号,添加todobot,如下图

DIRECT MESSAGES

什么是环信移动客服

环信移动客服是一款国内领先的全媒体智能SaaS客服产品,支持全媒体接入,包括网页在线客服、社交媒体客服(微博、微信)、APP内置客服和呼叫中心等多种渠道均可一键接入。

初始化你的Slack

什时候需要把Slack和客服集成?

星巴克想在Slack上卖咖啡,而Slack的用户都是Team内部的,不可能在每个Team内都安插一个星巴克的服务员。这样就需要把Slack上用户发的消息转到一个集中地方处理,于是我就想到了环信移动客服,消息传递到移动客服,Slack用户可以跟某个客服聊天,并且通过一些定制开发能够看见Slack用户的基本信息(比如:昵称、电话、团队名称等),并且可以二维码支付。

创建你的APP

打开 https://api.slack.com/apps 页面,点击 Create New App 按钮
填写你的 App Name 并选择开发者的Team,你就可以点击Create App按钮了,出现下面界面的时候,你的App就创建好啦

Basic Information

初始化设置你的App

点击OAuth & Permissions页面,在下面会有Permission Scope,这里我们搜索bot,然后选择并 Save Changes
在上面的Redirect URLS中填写OAuth认证成功之后的回调地址,比如 https://xxx.xxx/oauth/callback,当然这会儿你可能也不知道你的地址是什么呢,记得之后会用得上

点击Event Subscriptions,这是设置Slack 事件订阅的,有了它,我们就可以接收到用户在Slack上发的消息了。
进入页面后打开开关,在下面的Subscribe to Team Events中,我们搜索并添加message.channel和message.im,分别是群聊和单聊的消息事件订阅
当然,光订阅是不行的,我们还要设置订阅的地址,在上面的Request Url中设置好你的订阅地址就可以李,比如 https://xxx.xxx/events/callback

创建Bot User,在BotUsers页面,创建一个BotUser

然后你就可以在OAuth & Permissions页面,点击Install App to Team按钮,把App安装到你的Team了

Hello World

Step 1:事件订阅初始化

在设置事件订阅地址的时候,Slack会尝试进行一次检查,需要你他们的请求中携带的challenge原封不动的返回给服务器

Slack进行事件订阅验证的请求体
{
    "type": "url_verification",
    "challenge": "xxxxxxxxxxxxxx",
    "token": "slack verify token"
}

Step 2: 处理消息的事件

当我们想处理用户发来的消息的时候,我们需要处理消息的事件订阅。
最外层的type为event_callback,event为事件内容,根据event中的type能区分event的类型,channel为消息投递的channel id,user为发送人的id,text为消息的内容
要小心:如果是机器人发送的消息,event中会有bot_id,如果处理不当会导致消息循环发送(不要问我怎么知道的……)

Step 3: 把消息发送到移动客服

Step 3.1: 获取发消息的Token

方法:POST
地址:https://a1.easemob.com/{org}/{app}/token
 
请求体:
{
  "client_id": "client_id",
  "client_secret": "client_secret",
  "grant_type": "client_credentials"
}
响应体:
{
    "accessToken": "ABCDEFG"
}

Step 3.2:发送文本消息

from为发送消息的人,目前以slackTeamId_slackUserId_slackChannelId为格式

方法:POST
地址:https://a1.easemob.com/{org}/{app}/messages
请求头:
Authorization: Bearer accessToken
请求体:
{
    "from": "teamId_userid_channelId",
    "targetType": "users",
    "target": ["imServiceNumber"],
    "msg": {
        "msg": "你好",
        "type": "txt"
    },
    "ext": {
        "weichat": {
            "visitor": {
                "userNickname": "这里可以填写昵称,也可为空",
                "companyName": "这里填写公司名称,也可以为空"
            }
        }
    }
}

Step 4: 让Slack App接收移动客服消息

如果你想使用移动客服回调的方式接收消息,你需要跟你的移动客服客户经理申请开通;当然你也可以使用环信即时通讯云的SDK开发,使用长连接接收消息。
以下以回调模式举例,简单的集成只需要关心如下几个字段

  • eventType应该为chat
  • from 消息的发送人,应该就是imServiceNumber,要跟集成移动客服的保持一致
  • payload是消息的内容,简单的可以先支持txt类型的
  • to是接收消息的人,目前以slackTeamId_slackUserId_slackChannelId为格式
消息回调的body
{
  "callId": "xxxxxxxx#xxxxxx_305833766880810084",
  "chat_type": "chat",
  "eventType": "chat",
  "from": "im-channel",
  "msg_id": "305833766880810084",
  "payload": {
    "bodies": [
      {
        "msg": "啊啊啊",
        "type": "txt"
      }
    ],
    "ext": {
      "weichat": {
        "ack_for_msg_id": null,
        "agent": {
          "avatar": "",
          "userNickname": "Admin"
        }
      }
    }
  },
  "security": "xxxxxxxxxxxxxxxxx",
  "timestamp": 1488772272814,
  "to": "teamId_userid_channelId"
}

Step 5: 处理OAuth回调

OAuth回调的时候,slack会传给我们一个code,这个code相当于一个临时令牌,来换取accessToken等信息,下面的API就是如何使用code来获取这些信息

方法:POST
地址:https://slack.com/api/oauth.access
请求参数:
client_id
client_secret
code
响应体:
{
  "access_token": "xoxp-139740849892-139751631381-146013991078-XXXXXXXXXXXXXXXXXXXXXXX",
  "bot": {
    "bot_access_token": "xoxb-144002817952-XXXXXXXXXXXXXXXXXXXXXXX",
    "bot_user_id": "UXXXXXXXXX"
  },
  "ok": true,
  "scope": "identify,bot",
  "team_id": "TXXXXXXX",
  "team_name": "91chenxing",
  "user_id": "UXXXXXXX"
}

Step 6: 把收到的消息发给Slack 用户

发消息需要以SlackBot的身份发送,需要根据teamId获取到SlackBot,获取bot的accessToken。什么时候能获取到SlackBot信息呢?在Slack用户安装App的时候,进行完OAuth认证,Slack Bot信息就会通过 OAuth 回调传给我们了

方法:GET
地址:https://slack.com/api/chat.postMessage
请求参数:
token botAccessToken
channel 填写用户名中的channelId
text 消息内容
as_user 设置为true,就会以bot身份显示,而不是app

至此你就可以在移动客服中和Slack中的用户聊天啦
如果还需要获取User、Team的信息,可以使用Slack Api获取
如果需要的Api权限不够,则需要用户在授权的时候给予更多的权限

注意

  • 一定要注意消息收发,一不小心会导致消息循环发送,形成死循环
  • Slack的中Channel可以分为3中:Public Channel、Direct Message Channel、Private Channel,可以根据channel的第一个字母进行区分,C开头的是Public Channel,D开头的是Direct MessageChannel、G开头的是Private Channel
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,376评论 6 491
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,126评论 2 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 156,966评论 0 347
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,432评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,519评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,792评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,933评论 3 406
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,701评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,143评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,488评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,626评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,292评论 4 329
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,896评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,742评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,977评论 1 265
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,324评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,494评论 2 348

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,629评论 18 139
  • 点击查看原文 Web SDK 开发手册 SDK 概述 网易云信 SDK 为 Web 应用提供一个完善的 IM 系统...
    layjoy阅读 13,700评论 0 15
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,757评论 25 707
  • 作为一名常年混迹imGeek开发者社区的程序猿,本着响应社区号召的“我为人人,人人为我”口号,赠人玫瑰,手留余香。...
    imGeek阅读 1,665评论 0 3
  • 此系列的特色是把英国的传统童谣串联在故事里。这属于典型无法翻译的书。理解这套书必须要看英文原版。而且还需要熟悉相关...
    R2D2R2D2阅读 361评论 0 1