Salesforce Force.com Site 集成微信公众平台 (七) 客服接口

这一章我们将介绍在 Salesforce 中如何处理微信客服接口。当用户主动发消息到微信公众账号的时候,包括发送信息、点击自定义菜单click事件、订阅事件、扫描二维码事件、支付成功事件、用户维权,微信将会把消息数据推送给开发者,开发者在一段时间内(目前为48小时)可以调用客服消息接口,通过 POST 方法把 JSON 数据包发送消息给普通用户,在48小时内不限制发送次数。此接口主要用于客服等有人工消息处理环节的功能,方便企业提供更加优质的服务。

客服接口调用请求说明

客服接口调用的接口说明如下( http 请求方式为 POST )

https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=[ACCESS_TOKEN]

获取 Access Token 的方式,可以查看 Salesforce Force.com Site 集成微信公众平台 (五) 菜单处理

客服接口提供了巨大的想象空间,我们可以据此开发企业客服解决方案,当用户发送支持请求到微信公众账号后,客服人员在 Salesforce 里收到这些信息并做进一步的处理。

向用户发送文本消息

向用户发送文本消息时,发送的数据格式如下:

{ 
    "touser":"OPENID",
    "msgtype":"text", 
    "text": 
    { 
        "content":"Hello World" 
    }
}

参数的说明如下(OpenID 就是用户的微信ID):

接下来我们演示一个例子,当单击技术社区菜单的时候发送一个测试客服消息文本给用户。代码如下:

private static void sendMsgWithCustomerServices()  
{
    Http h = new Http(); 
    HttpRequest req = new HttpRequest(); 
    req.setMethod('POST'); 
    req.setHeader('Content-Type','text/xml;charset=UTF-8'); 

    String sendMsg = '{' + 
        '"touser":"oDZ3uw6ZxjacNBe26LK7KLldBDxo",' + 
        '"msgtype":"text",' +  
        '"text": { "content":"测试客服消息" }' + 
    }';

    req.setBody(sendMsg); 
    req.setEndpoint('https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=' + accesstoken);

    String bodyRes = ''; 

    try
    {
        HttpResponse res = h.send(req); 
        bodyRes = res.getBody(); 
    } 
    catch(System.CalloutException ex)
    { 
        System.debug('Callout error: '+ e); 
        ApexPages.addMessages(ex); 
    }
}

近接着添加上面的方法到 handleEvent 方法。

private static String handleEvent(ReceiveMsg msg)  
{
    String event = msg.event;
    String strTmp = '';
    if(event.equals('subscribe'))
    {
        strTmp = '欢迎关注本账号!';
    }
    else if(event.equals('unsubscribe'))
    {
        strTmp = '';
    }
    else if(event.equals('CLICK'))
    {
        if('技术社区' == msg.eventKey)
        {
            sendMsgWithCustomerServices();
        }
        else
        {
            strTmp = '您点击了' + msg.eventKey;
        }
    }
    String result = composeTextReply(msg, strTmp);
    return result;
}

显示结果如下:

发送其他消息类型

向用户发送图片消息

发送的数据格式如下:

{
    "touser":"OPENID",
    "msgtype":"image",
    "image":
    {
      "media_id":"MEDIA_ID"
    }
}

参数说明如下(其中图片的媒体ID需要通过腾讯的上传多媒体文件接口上传图片后获得):

向用户发送语音消息

数据格式如下:

{
    "touser":"OPENID",
    "msgtype":"voice",
    "voice":
    {
      "media_id":"MEDIA_ID"
    }
}

参数说明如下:

向用户发送视频消息

发送视频的消息格式如下:

{
    "touser":"OPENID",
    "msgtype":"video",
    "video":
    {
      "media_id":"MEDIA_ID",
      "thumb_media_id":"MEDIA_ID",
      "title":"TITLE",
      "description":"DESCRIPTION"
    }
}

参数说明如下:

向用户发送音乐消息

发送音乐的消息格式如下:

{
    "touser":"OPENID",
    "msgtype":"music",
    "music":
    {
      "title":"MUSIC_TITLE",
      "description":"MUSIC_DESCRIPTION",
      "musicurl":"MUSIC_URL",
      "hqmusicurl":"HQ_MUSIC_URL",
      "thumb_media_id":"THUMB_MEDIA_ID" 
    }
}

参数说明如下:

总结

这一章我们介绍了微信客服接口的使用。后的章节我们将讲解微信的 OAuth 认证。

Samba

Read more posts by this author.