美文网首页环信
Slack与环信移动客服集成

Slack与环信移动客服集成

作者: 晨星桑 | 来源:发表于2017-03-10 10:17 被阅读92次

    简介

    什么是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

    相关文章

      网友评论

        本文标题:Slack与环信移动客服集成

        本文链接:https://www.haomeiwen.com/subject/tjjngttx.html