开通小程序的客服功能

开启自定义的小程序的客服功能,需要两步,一步是在自己的微信平台开通消息推送的功能。第二步是完成自己的后台。

第一步:开启推送功能:

具体的在官方wiki里有,可以点这里

有几个坑需要注意一下,如果你的token验证总是失败:

1.建议你看一下自己server服务器的token与现在的token是否相同。

2.如果你发现自己的代码绝对没有问题,token也绝对没有问题的话,而且还是报错,那么我建议检查一下自己服务器的文件的权限问题了,如果你是tp框架,检查一下啊自己的runtime是否给了777,如果你是给755的话可能还是不会起作用。

第二步:完成自己后台的服务器

前提:你的服务器可以被微信访问,有的公司运维会做控制,所以在这里不要浪费太多时间。

流程:用户出发某个事件后,向微信服务器发送数据包,如果你开启消息推送服务(第一步),那么微信服务器会进行数据的处理转发,具体的格式是xml还是json取决于你在微信后台的选择,我这里选择的json,微信通过主动调用你的接口将数据包返回给你,如果你想向用户响应某个信息,需要某个接口向微信服务器发送你的响应数据包,里面包含客服的openid.具体的详情看代码。

<?php
header(‘Content-type:text‘);
define("TOKEN", "mytoken");

class Mini extends Controller{
    private $appid = ‘‘;
    private $secret = ‘‘;
    public function check(){     //校验服务器地址URL
        if (isset($_GET[‘echostr‘])) {
            $this->valid();
        }else{
            $this->responseMsg();
        }
    }
    public function valid()
    {
        $echoStr = $_GET["echostr"];
        if($this->checkSignature()){
            header(‘content-type:text‘);
            echo $echoStr;
            exit;
        }else{
            echo $echoStr.‘+++‘.TOKEN;
            exit;
        }
    }
    private function checkSignature()
    {
        $signature = $_GET["signature"];
        $timestamp = $_GET["timestamp"];
        $nonce = $_GET["nonce"];

        $token = TOKEN;
        $tmpArr = array($token, $timestamp, $nonce);
        sort($tmpArr, SORT_STRING);
        $tmpStr = implode( $tmpArr );
        $tmpStr = sha1( $tmpStr );

        if( $tmpStr == $signature ){
            return true;
        }else{
            return false;
        }
    }
    public function responseMsg()
    {
        $postStr = file_get_contents(‘php://input‘);//因为我的环境是php7
        if (!empty($postStr) && is_string($postStr)){
            $postArr = json_decode($postStr,true);
            if(!empty($postArr[‘MsgType‘]) && $postArr[‘MsgType‘] == ‘text‘){   //文本消息
                $fromUsername = $postArr[‘FromUserName‘];   //发送者openid
                $toUserName = $postArr[‘ToUserName‘];       //小程序id
                $textTpl = array(
                    "ToUserName"=>$fromUsername,
                    "FromUserName"=>$toUserName,
                    "CreateTime"=>time(),
                    "MsgType"=>"transfer_customer_service",
                );
                exit(json_encode($textTpl));
            }elseif(!empty($postArr[‘MsgType‘]) && $postArr[‘MsgType‘] == ‘image‘){ //图文消息
                $fromUsername = $postArr[‘FromUserName‘];   //发送者openid
                $toUserName = $postArr[‘ToUserName‘];       //小程序id
                $textTpl = array(
                    "ToUserName"=>$fromUsername,
                    "FromUserName"=>$toUserName,
                    "CreateTime"=>time(),
                    "MsgType"=>"transfer_customer_service",
                );
                exit(json_encode($textTpl));
            }elseif($postArr[‘MsgType‘] == ‘event‘ && $postArr[‘Event‘]==‘user_enter_tempsession‘){
                $fromUsername = $postArr[‘FromUserName‘];  

          $data = array(
           "touser"=>$fromUsername,
           "msgtype"=>"link",
            "link"=>[
            "title"=>‘this is title‘,
            "description"=> "Is Really A Happy Day",
            "url":=>"URL",
            "thumb_url"=>"THUMB_URL"
            ]
           );

          $json = json_encode($data,JSON_UNESCAPED_UNICODE);
                $access_token = $this->get_accessToken();
                $url = "https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=".$access_token;
                //将数据返给微信服务器进行转发。
                $this->curl_post($url,$json);

            }else{
                exit(‘aaa‘);
            }
        }else{
            echo "";
            exit;
        }
    }

    public function get_accessToken(){
        if(cache(‘access_token‘)){
            return cache(‘access_token‘);
        }
        /* 不在有效期,重新发送请求,获取access_token */
        else{
            $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$this->appid}&secret={$this->secret}";
            $result = curl_get_https($url);
            $res = json_decode($result,true);   //json字符串转数组
            if($res){
                cache(‘access_token‘,$res[‘access_token‘],7100);
                return cache(‘access_token‘);
            }else{
                return ‘api return error‘;
            }
        }
    }
    /**
     * @Author   callmelx
     * @DateTime 2018-10-06
     * @return   [type]     [description]
     */
    public function curl_post($url,$data=‘‘){
        $curl = curl_init();
        curl_setopt($curl, CURLOPT_URL, $url);
        curl_setopt($curl, CURLOPT_POST, 1); // 发送一个常规的Post请求
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
        if (!empty($data)){
            curl_setopt($curl, CURLOPT_POSTFIELDS,$data);
        }
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
        //curl_setopt($curl, CURLOPT_HTTPHEADER, $headers );
        $output = curl_exec($curl);
        if (curl_errno($curl)) {
            echo ‘Errno‘.curl_error($curl);//捕抓异常
        }
        curl_close($curl);
        if($output == 0){
            echo ‘success‘;exit;
        }
    }
}

参考的博客是php急先锋的博客

原文地址:https://www.cnblogs.com/callmelx/p/9747220.html

时间: 2024-10-12 18:16:50

开通小程序的客服功能的相关文章

微信小程序智能客服平台有什么推荐?客服的功能是如何实现的?

依托微信这个强大的入口,小程序以即用即走无需下载的方式搞定日常生活工作和企业的各种需求. 随之而来,小程序流量涌入,对商品有问题或者有需要咨询店家的用户越来越多,客服面对大量的信息,该如何处理? 那么有没有一款更少的投入成本.更快的工作效率.更有效的小程序智能客服平台呢? 芝麻小客服围绕企业在小程序中对接用户的咨询,将产品和用户以及商家链接在一起,促使商家更好的服务用户,沉淀用户. 从产品的营销.客户服务方面帮助企业,更好建立商家售前售后服务,解放人力成本,为小程序的营销建立完善的体系,还将实现

小程序打开客服会话的代码

<button open-type="contact" class="nav-custom" plain="true"> <image src="https://buy.fishqc.com/img/icon-customer-service.png" style="width:40rpx;display: block;margin:0 auto 0;" mode="widthF

微信小程序隐藏客服按钮,用图片替代&amp;增加提示卡片可随时关闭。

如图,本次案例要做的是右下角的客服按钮和蓝色渐变的提示卡片,可随时关闭的. 微信官方给了客服按钮标签 <contact-button type="default-dark" size="100"></contact-button> 这个标签的样式不可修改,如果我们要换自己想改的图片,需要怎么做呢?就像我图片上的样式.我这个客服控件是放在一个正圆的view里的居中位置,所以,我这里先通过position定位到居中位置,把size放到最大. 然后

分享为小程序添加自动回复消息的5种方法!自动客服功能的微信小程序

如何通过小程序客服消息引导自动关注公众号? 小程序客服自动回复一个图文链接? 小程序客服可以发小程序卡片吗? 小程序客服能像公众号一样设置关键词回复吗? 收到消息时自动回复? 微信小程序新手如何默认自动回复功能 如果你遇到以上问题,请往下看!教大家实现微信小程序客服自动回复消息功能,以帮助我们更好地与客户进行互动. 当我们的小程序接入客服,在小程序前端增加一个客服按钮,用户可以点击按钮主动和我们的客服互动! 但是有个问题,消息那么多,如何才能接待的过来,能否想微信公众号一样自动回复,关键词回复,

如何申请开通微信多客服功能

2014年5月9日,微信团队发布最新消息,微信公众平台增加投票和多客服功能(多客服为公众帐号提供多客服功能,支持多人同时为一个公众号提供客服服 务),尤其是之前一直严格限制的“多客服功能”,仅限于招商银行等极少数服务号在测试,现在微信正式开放申请,下面亚成就和大家一起分享一下,此次多客服 功能的使用方法. 在微信公众平台申请开通多客服使用权限 认证的微信服务号(订阅号和未认证的服务号没有权限申请多客服功能)可以在 “公众平台-服务-服务中心” 点击 “多客服”. 在多客服页面,点击“开通”,开通

公众号开发之客服功能的群发消息功能

本周我们做了一个有技术含量的一个新功能:客服功能的群发消息功能.此功能主要用于公众号客服群发提醒,比如客户的商家认证审核通过,用户购买商品成功等功能提醒,可以有效减少网站项目开发所必要的资金节约. 接口代码. 接口代码如下: public function reply_customer(){ $mtime=strtotime("-1 hour"); $where['add_time']=array("gt",$mtime); $res=M("fa_need

大数据技术之_16_Scala学习_11_客户信息管理系统+并发编程模型 Akka+Akka 网络编程-小黄鸡客服案例+Akka 网络编程-Spark Master Worker 进程通讯项目

第十五章 客户信息管理系统15.1 项目的开发流程15.2 项目的需求分析15.3 项目的界面15.4 项目的设计-程序框架图15.5 项目的功能实现15.5.1 完成 Customer 类15.5.2 完成显示主菜单和退出软件功能15.5.3 完成显示客户列表的功能15.5.4 完成添加客户的功能15.5.5 完成删除客户的功能15.5.6 完善退出确认功能15.5.7 完善删除确认功能15.5.8 完成修改客户的功能第十六章 并发编程模型 Akka16.1 Akka 的介绍16.2 Acto

C#开发微信门户及应用(7)-微信多客服功能及开发集成

最近一直在弄微信的集成功能开发,发现微信给认证账户开通了一个多客服的功能,对于客户的咨询,可以切换至客服处理的方式,而且可以添加多个客服进行处理,这个在客户咨询比较多的时候,是一个不错的营销功能.微信多客服的功能,能够在很大程度上利用客服员工资源,及时迅速对客户咨询信息进行处理,为企业带来更多的机会和市场. 默认这个多客服的功能,需要在微信公众平台中的服务中心进行主动开通,默认是不开通的,为了体验这个功能,我这里把多客服功能进行开通. 1.多客服准备工作 微信的多客服功能,对于客服的响应操作,既

ios开发之 -- 5分钟集成融云的客服功能

最近项目中遇到了客服的功能,首先想到的就是使用融云的功能,因为以前做的即时通讯的项目,用的都是融云的sdk,花了点时间研究了下,希望能帮到大家! 废话不多说,步骤如下: 一.申请融云账号 二.创建应用 三.开通客服服务,融云的客服集成的是智齿客服服务系统,完全能够满足使用! 四.开通客服服务后,会生成客服id,target id就是这个,进入聊天页面之前用的 五.进入应用管理界面,点击API调试,id和username,还有头像url可以随便输,测试用的,下面会有打印,生成一个token 六.准