「推荐」怎么实时接收小程序客服消息通知,并在手机上回复

在微信小程序开发中,可以非常方便的集成客服功能,只需要一行代码便可以将用户引导至客服会话界面。这行代码就是:

<button open-type="contact" bindcontact="handleContact">联系我们</button>   

当用户点击这个【联系我们】的按钮时,便会进入微信自带的小程序客服会话界面。如下图:

虽然只能发送表情和照片,但是对于小程序来讲,已经是非常不错的功能了。

但是,虽然可以一行代码让我们的小程序拥有客服功能,但是当用户给我们小程序发消息的时候,我们小程序的管理员或运营者并不能实时收到消息通知,这就导致经常不能及时回复用户信息,导致销售机会的流失。

如果想要在手机上实时接收小程序客服消息通知,以及在手机上回复用户信息,那就得自己写代码了,或者更简单的,使用第三方平台的服务。

下面,笔者就详细介绍这两种实现方式。

方式一:自己写代码

首先,需要按照官方提供的消息推送文档,完成消息推送接口的开发。请参考这里。这一步通常是比较难的,如果是第一次尝试对接,建议加密方式采用明文方式。

当消息推送接口开发完成后,需要到小程序后台,在「开发」-「开发设置」-「消息推送」中,管理员扫码启用消息服务,填写服务器地址(URL)、令牌(Token) 和 消息加密密钥(EncodingAESKey)等信息。如下图所示:

在上图中的页面提交成功之后,即表示你们开发的消息推送接口反应正常,可以正常收到用户的客服消息了。

接下来,便是接收文字消息和图片消息。

1.1 文本消息

文本消息对接非常的简单,其XML数据格式如下:

<xml>
   <ToUserName><![CDATA[toUser]]></ToUserName>
   <FromUserName><![CDATA[fromUser]]></FromUserName>
   <CreateTime>1482048670</CreateTime>
   <MsgType><![CDATA[text]]></MsgType>
   <Content><![CDATA[this is a test]]></Content>
   <MsgId>1234567890123456</MsgId>
</xml>

你只需要将Content的值通过微信或者短信,或者任何方式发送给你们运营者(或管理员)即可,建议通过微信公众号的模板消息发送,当然,这得要求你们要有已认证的服务号,并且已申请模板消息。

当然运营者收到模板消息通知后,点开消息即可进行回复。这里得需要开发一个聊天界面,方便运营者直接给用户发消息。

这个聊天界面可简单可复杂,但是最基本的应该要支持输入文字和上传图片。所以,开发起来其实也很复杂。

1.2 图片消息

图片消息XML数据格式如下:

<xml>
      <ToUserName><![CDATA[toUser]]></ToUserName>
      <FromUserName><![CDATA[fromUser]]></FromUserName>
      <CreateTime>1482048670</CreateTime>
      <MsgType><![CDATA[image]]></MsgType>
      <PicUrl><![CDATA[this is a url]]></PicUrl>
      <MediaId><![CDATA[media_id]]></MediaId>
      <MsgId>1234567890123456</MsgId>
</xml>

可以看到这里提供了PicUrl图片链接地址,首先需要下载该图片到本地服务器,然后再创建消息并推送给运营者。

1.3 发送小程序客服消息

当运营者通过你们自己开发的聊天界面发送消息时,这时需要调用小程序的API。请参考这篇API文档

调用发送消息接口的时候,需要先获取accesstoken,并且要求你们服务器自行维护一份可用的accesstoken,这对于很多新手开发人员来讲也是比较难以理解的。

而如果是发送图片消息,则需要通过新增临时图片素材接口获得media_id,然后才能调用发送图片接口。 

总的来讲,实现消息的发送也是比较复杂的。

下面,笔者给大家分享第二种实现在手机上实时接收小程序客服消息通知的方式,也是最为推荐的方式。

 

方式二:直接使用第三方平台的服务

 关注下图所示公众号,完了之后点击公众号底部自定义菜单【新增授权】。

重要提示:授权的时候 只勾选客服消息权限,其他权限一个都不要选,否则可能对原有的小程序造成影响。

授权完成后,可以进入自己的小程序,给自己的小程序发一个消息,是不是立即收到了来自微小助公众号的消息通知。点击这个通知就可以直接回复,支持文本、相册选择、拍照。

这时候,你可能已经发现,在第三方平台的聊天界面无法显示粉丝头像和昵称。这是因为小程序只能通过小程序内获取用户信息,而不能通过服务器端获取。

没关系,该第三方平台提供了对接头像昵称的接口。

对接原理:

作为小程序的开发方,通常我们都会将用户头像、昵称和openid存到自己的数据库。那么只需要我们的WEB服务器开放一个根据openid返回头像昵称的接口,那么当第三方平台需要显示用户头像昵称的时候,传一个openid过来就可以显示头像昵称了。而对于小程序开发方,只需要开放一个非常简单的数据接口,并且数据多来自已有的数据库,直接返回即可。

该接口的文档获取方式:微小助公众号 - 底部菜单【管理中心】 - 进入自己的小程序。点击如下图所示一栏:

在接下来的页面中,便会弹出接口对接说明,如下图:

请看.NET示例代码:

[TokenAuthorize(Anonymous = true), HttpGet]
public ActionResult GetStudentNameAndAvatar(string openId)
{
    var service = Ioc.GetService<IStudentService>();
    var user = service.GetOauthAppletUser(openId);
    if (user == null)
    {
        return null;
    }
    return Json(new
    {
        avatarUrl = user.AvatarUrl,
        nickname = user.NickName
    }, JsonRequestBehavior.AllowGet);
}

下面是java版的API接口实现示例:

@RequestMapping(value = "/get-user-info", method = RequestMethod.GET)
@ResponseBody
@Authorize(anonymous = true)
public UserInfoDto getUserInfo(String openId) {
    OAuthWeixinUser user = this.userService.getUserByOpenId(openId);
    UserInfoDto dto = new UserInfoDto();
    dto.setAvatarUrl(user.getHeadimgUrl());
    dto.setSex(user.getGender().getValue());
    dto.setNickname(user.getNickname());
    dto.setRemark(user.getRemark());
    return dto;
}

其中UserInfoDto类的定义如下:

public class UserInfoDto {
    private String avatarUrl;
    private String nickname;
    private int sex;
    private String remark;

    public String getAvatarUrl() {
        return avatarUrl;
    }

    public void setAvatarUrl(String avatarUrl) {
        this.avatarUrl = avatarUrl;
    }

    public String getNickname() {
        return nickname;
    }

    public void setNickname(String nickname) {
        this.nickname = nickname;
    }

    public int getSex() {
        return sex;
    }

    public void setSex(int sex) {
        this.sex = sex;
    }

    public String getRemark() {
        return remark;
    }

    public void setRemark(String remark) {
        this.remark = remark;
    }
}

接口开发完成后,发布到生成环境,可以随便从数据库取一个openid拼接成URL之后在浏览器中测试。测试正确返回数据后,将此URL回填到第三方平台内的URL配置地方。

现在,再次用自己的微信给小程序发一个消息,你会看到,在运营者(或管理员)打开通知的聊天界面,已经可以正常显示粉丝头像昵称了。

是不是非常的简单呢!(如果需要更完善的第三方平台操作步骤,请点击这里继续阅读

THE END.

<think>好的,我现在需要解决用户的问题:如何通过微信小程序授权用户关注公众号,在之后接收小程序消息。首先,用户提到的是“授权关注公众号”,所以核心点在于如何让小程序用户关注关联的公众号,且实现消息接收。 根据之前的对话,用户已经了解微信开发中的几种授权方式,比如网页授权、接口权限授权、第三方平台授权和手机号授权。现在的问题涉及到小程序和公众号之间的联动,特别是关注公众号和消息推送的结合。 首先,我需要确认微信官方是否支持从小程序直接引导关注公众号。根据微信的规定,小程序和公众号虽然可以关联,但直接在小程序内引导关注公众号可能有特定的限制。例如,小程序不能直接跳转到公众号关注页面,但可以通过某些方式间接实现,比如使用小程序插件或者开放标签。 然后,用户提到“接收微信小程序消息”。这里可能有两种情况:一种是用户关注公众号后,公众号可以发送消息给用户;另一种是小程序本身的消息通过公众号来推送。需要明确用户具体指的是哪一种。 接下来,需要查阅微信官方文档,确认是否有相关的接口或方法可以实现这些功能。比如,公众号关注接口是否可以通过小程序触发,或者是否有跨应用的权限授权方式。 可能的步骤包括: 1. 在小程序内引导用户跳转到公众号关注页面。但需要注意,直接跳转可能被微信限制,所以可能需要使用开放标签`<official-account>`,让用户在小程序内扫码或点击关注。 2. 用户关注公众号后,公众号可以主动发送消息,但需要用户已授权,且公众号有相应的模板消息权限。 3. 小程序消息通过公众号发送,可能需要将小程序的用户和公众号的用户进行关联,比如通过unionid来识别同一用户,这样在用户关注公众号后,可以通过公众号的接口发送消息。 同时,需要注意微信的规则,比如不能强制或诱导用户关注公众号,必须用户自愿。因此,在设计和实现时需要遵守这些规定,避免被封禁。 另外,用户可能的需求是希望通过小程序吸引更多公众号关注,通过公众号持续触达用户,比如发送通知、更新等。因此,实现方式需要合法合规,同时技术上可行。 可能的挑战包括如何在小程序内合法地引导关注,以及如何将小程序用户与公众号用户关联起来。解决方案可能包括使用unionid进行用户身份的统一,以及利用微信提供的开放能力,如开放标签或插件。 总结下来,步骤可能如下: 1. 小程序内使用开放标签引导用户关注公众号。 2. 用户关注后,通过unionid关联小程序和公众号的用户身份。 3. 公众号通过模板消息客服消息向用户发送消息,内容可能来自小程序的事件触发。 需要详细查阅微信官方文档,特别是关于小程序跳转公众号、开放标签的使用,以及消息推送的接口权限和限制。同时,要确保所有操作符合微信平台的规定,避免违规。</think>在微信生态中,通过小程序引导用户关注公众号实现消息互通,需要结合小程序和公众号的开放能力,但需注意微信的规则限制(**不可强制诱导关注**)。以下是实现步骤和注意事项: --- ### **一、小程序内引导关注公众号** 微信官方**不允许直接在小程序内跳转公众号关注页面**,但可通过以下方式间接引导: 1. **使用 `<official-account>` 开放标签** 在小程序页面中嵌入开放标签,用户需主动点击标签扫码关注: ```html <official-account> ``` - **条件**:小程序需与公众号同主体,且已关联。 - **效果**:用户点击标签后,需手动扫码跳转至公众号关注页。 2. **图文/按钮引导** 通过文案或图片提示用户手动搜索公众号名称或保存二维码,例如: ```html <view>点击右上角“...”→ 搜索公众号【XXX】关注我们</view> ``` --- ### **二、用户身份关联(UnionID 机制)** 若用户已在小程序和公众号中登录同一微信账号,可通过 **UnionID** 识别同一用户: 1. **前提**:小程序和公众号需绑定到同一个微信开放平台账号。 2. **获取 UnionID**: - **小程序端**:用户登录后,通过 `wx.login` 获取 `code`,后端调用 `auth.code2Session` 接口获取 UnionID。 - **公众号端**:通过网页授权或用户已关注公众号的事件推送,获取 UnionID。 --- ### **三、公众号接收小程序消息的两种方式** #### **方式 1:通过公众号主动发送模板消息** 1. **用户关注公众号后**,公众号可向用户发送模板消息(需用户授权)。 2. **触发条件**: - 当小程序内发生特定事件(如订单状态更新),后端将事件通知公众号服务器。 - 公众号通过用户的 UnionID 匹配身份,调用模板消息接口发送通知。 **示例代码(后端逻辑)**: ```python # 通过 UnionID 获取公众号用户的 openid user_openid = get_mp_openid_by_unionid(unionid) # 发送模板消息 requests.post( 'https://api.weixin.qq.com/cgi-bin/message/template/send', params={'access_token': access_token}, json={ "touser": user_openid, "template_id": "模板ID", "data": {"content": "您的小程序订单已发货"} } ) ``` #### **方式 2:用户主动发送消息至公众号** 1. **配置公众号消息服务器**:在公众号后台设置消息推送地址。 2. **用户在小程序内触发事件**:例如生成一条消息内容,引导用户复制后,手动粘贴到公众号对话框发送。 3. **公众号后台接收消息**:根据消息内容自动回复或人工处理。 --- ### **四、注意事项** 1. **合规性**: - 禁止自动强制跳转关注公众号,需用户主动操作。 - 模板消息需用户事先同意(如点击授权)。 2. **接口权限**: - 公众号需认证开通模板消息功能。 - 小程序需与公众号同主体或关联。 3. **用户路径优化**: - 通过小程序活动(如领优惠券)引导用户关注公众号,提升转化率。 - 在公众号菜单中嵌入小程序入口,形成双向引流。 --- ### **五、替代方案(无感消息通知)** 若无需通过公众号发送消息,可直接使用 **小程序订阅消息**: 1. 在小程序内请求用户授权订阅消息。 2. 通过 `wx.requestSubscribeMessage` 发送模板通知,用户点击通知可跳转回小程序。 --- 通过上述方案,可在合规前提下实现小程序与公众号的联动。建议优先使用 **UnionID 关联用户身份** + **模板消息通知** 的组合,确保用户体验和消息可达性。具体实现可参考[微信官方文档](https://developers.weixin.qq.com/doc/)。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值