如何使用一个链接唤起qq私信?巨长无比的踩坑总结

公司最近要开发一个qq机器人,于是产品很自然就有了个需求:希望在h5推广页面上能点击一个链接直接跳转到qq内的机器人。结果为了搞清楚这个狗比api我花了前前后后快两天的时间……

首先,pc端(windows,mac不清楚)和手机端的解决方案是不同的。pc上的解决方案最简单:
直接使用这样一个链接即可 http://wpa.qq.com/msgrd?v=3&uin=qqIDHere&site=qq&menu=yes
uin处填入qq号。这个链接不会直接允许发起私信,而会要求先加好友。不过由于需求只需要找到机器人用户,这个方案是直接可行的。

对于手机端,一开始的想法是使用二维码分享,即令用户跳转到二维码对应的链接。每个qq用户都可以生成一个自己的二维码,扫码之后就可以跳转到个人页面,那么很自然就会认为这个二维码对应的链接就能解决问题。然而事情并没有这么简单……
该方案的url形式如下:
https://qm.qq.com/cgi-bin/qm/qr?k=4z7n7RymBjt83***0DD-Mhxezj__h7zg6&noverify=0
(打了个码)
这里可以发现一个问题,二维码方案的url里面不是靠qq号来辨识的。如果需要有多个机器人,就会有繁复的配置。不过这个问题还算可以解决。这个方案被抛弃的主要原因是另一个问题:只有在qq内部打开这个链接才是百分百可靠的。这个链接在某些浏览器下无法正常跳转到qq,这里点名批评safari,我手机里装了qq他还坚持不懈地给我跳app store,把参数全给整丢了。这哪儿行啊,safari用的人也不少,否决否决。

手机上跳转app,其实最自然的想法是用urlschema,然而并没有在qq的官方文档里找到这方面的资料……只有在互联网大海中的几个琐碎角落发现了这样一个东西:
mqqwpa://im/chat?chat_type=wpa&uin=qq_id_here&version=1&src_type=web
这个url schema会在手机端打开对应qq号的私信界面,通过“qq咨询”发起会话。看到这个的时候我老开心了,结果一私信,好家伙,直接红色感叹号。提示“对方没有开通在线咨询,无法发起临时会话”。也挺河里,qq不让你随便找个人就骚扰。那么如果我想被骚扰怎么办呢?有两个步骤:
1、对该qq号进行设置,发起临时会话的许可中勾选上qq咨询
2、打开https://shang.qq.com/v3/index.html,使用需要被骚扰的qq号登录,之后点击顶部的推广工具tab。这时候他会弹出一个xxx服务免费开通的弹窗,直接给他开通了。之后这个qq号就能收到私信了。

你可能感兴趣的:(如何使用一个链接唤起qq私信?巨长无比的踩坑总结)