微信客服源码如何在用户成本最少的情况下接入自己的系统?
背景
前面已经说过要做一个将抖音的视频转成图文并保存到自己的文件库的系统。其中有一个比较困扰的点。
如何在用户成本最少的情况下,方便地接入到自己的系统中选型
当时想到了几种方案,并做了简单的调研1。微信
方案:没有提供接口,如果要做的话,需要用辅助功能或者是hook微信,也就是说,需要使用非正常的操作来完成。
优缺点:技术成本比较高技术上需要较大的修改,并且后续的兼容成本也存在问题业务成本大,需要有一个手机专门来做这个事情,并且需要一个单独的微信小号来处理。2。企业微信:
方案:接收消息与事件配置的位置
优缺点:需要开启企业微信3。钉钉
方案:暂未发现可用方案4。公众号
方案:接收普通消息
优缺点:优点是可以直接使用,缺点就是可能会影响到现有的公众号业务
综上,选择企业微信进行尝试实现回调的验证和信息的接收
我已经打听好了,我们要用的是企业微信的客服,查看官方文档我们可以知道获取到用户的消息需要两个方法通过get方法验证接口通过post接口接收发送的数据
get方法的实现,可以参考get接口验证参考
post的方法需要进行一个改造从post方法中获取到必须的参数ifrequest。methodPOST:datastr(request。data。decode(encodingutf8))signrequest。args。get(msgsignature)timestamprequest。args。get(timestamp)noncerequest。args。get(nonce)returnqiweiOut。postReciveMsg(sign,timestamp,nonce,data)获取到token为下一步拉取内容做准备defpostReciveMsg(sReqMsgSig,sReqTimeStamp,sReqNonce,sReqData):sTokenglobalconfig。sTokensEncodingAESKeyglobalconfig。sEncodingAESKeysCorpIDglobalconfig。sCorpIDwxcptWXBizMsgCrypt(sToken,sEncodingAESKey,sCorpID)ret,sMsgwxcpt。DecryptMsg(sReqData,sReqMsgSig,sReqTimeStamp,sReqNonce)print(ret,sMsg)if(ret!0):printERR:DecryptMsgret:str(ret)sys。exit(1)xmltreeET。fromstring(sMsg)tokenxmltree。find(Token)。textreturngetKFMsgByToken(token)检查accesstoken如果没有就请求,如果有就拉去信息解析拉取到的信息,将解析的内容交给内容处理逻辑defgetKFMsgByToken(token):getaccess()urlhttps:qyapi。weixin。qq。comcgibinkfsyncmsg?accesstokenqiwei。QiWeiOut。accesstokenbody{cursor:globalconfig。cursor,token:token,limit:1000,voiceformat:0}responserequests。post(url,datajson。dumps(body))contentresponse。content。decode(utf8)jsonObjjson。loads(content)errorCodejsonObj〔errcode〕print(getKFMsgByTokenerror:str(errorCode))ifjsonObj〔errcode〕0:globalconfig。cursorjsonObj〔nextcursor〕listjsonObj〔msglist〕foriinlist:ifi〔msgtype〕text:contentMsgi〔text〕〔content〕print(contentMsg)douyin。receverDouyinShareMsg(contentMsg)return
本以为到此就可以了,我高高兴兴地去设置客服了,但是发现,因为开启了api,不能设置了,所以还要通过api管理客服。微信客服管理
可以参考微信客服管理
首先我们要先创建一个微信客服,但是发现微信客服的创建,必须要有一个图片!所以只能先上传图片。defuploadTempImg():getaccess()urlhttps:qyapi。weixin。qq。comcgibinmediaupload?accesstokenqiwei。QiWeiOut。accesstokentypeimagewithopen(。。staticicon。jpeg,rb)asf:sizef。sizeof()print(size)file{file:(icon。jpeg,f,ContentType:imagejpg)}responserequests。post(url,filesfile)print(response。content)
传完图片,我们就继续创建微信客服吧defcreateCustomServer():getaccess()urlhttps:qyapi。weixin。qq。comcgibinkfaccountadd?accesstokenqiwei。QiWeiOut。accesstokenbody{name:测试的客服帐号,mediaid:上一步打印出来的id}responserequests。post(url,datajson。dumps(body))resultresponse。content。decode(utf8)将客服id打印出来print(result)jsonObjjson。loads(result)ifjsonObj〔errcode〕0:print(客服创建成功)else:print(客服创建失败)
完了之后,发现还是没有办法直接安排客服,需要通过api安排客服
为了方便使用,创建一个客服链接,以后在任何地方使用,把链接丢过去就好了defgetCustomServerUrl():getaccess()urlhttps:qyapi。weixin。qq。comcgibinkfaddcontactway?accesstokenqiwei。QiWeiOut。accesstokenbody{openkfid:上一步打印出来的客服id,scene:12345}responserequests。post(url,datajson。dumps(body))打印客服链接print(response。content)
然后把这个链接放到合适的位置,以后用户就可以直接使用了。关注公众号:arigeweixin,回复微信客服源码获取相关源码