杰者的备忘录

当前位置:   网站首页 >> 杂烩

接入百度阿拉丁opencard的webhook所踩的坑

最近收到百度搜索产品运营小姐姐的要求,邀请我手上一个站跟百度小程序去接入百度的阿拉丁opencard(形式上有点类似于之前李彦宏在PC端时代搞过的框计算,只不过阿拉丁是移动端的)。


百度小姐姐发来了文档并要求给出开发排期,想着应该不难所以答应小姐姐马上做。

文档:https://open.baidu.com/xcxdoc/guide/problem/post-api.html

看完一脸懵逼,各种莫名其妙的名词... 不过看起来不太复杂,直接上吧。边做边理解。


此时小姐姐拉了一个群,里面有一位不说话的产品经理。


直接复制PHP Webhook的示例代码往框架里面怼,修改了返回数据部分。

然后就直接来到调试,百度提供了一个调试工具

https://open.baidu.com/static/newopen/api_debug/


由于文档里的API 加密协议部分提到了webhook接口只能http,不能https,百度这个调试工具自己又是https的,在里面测试由于跨域等各种问题,即使根据工具页面“调试前准备”里写的使用带参数的快捷方式也都不能正常访问到接口,折腾了大半天,最后自己找到了,配置完那个谷歌浏览器的快捷方式,打开以后,还需要点击地址栏那个小锁头(就是open.baidu.com前面那个),然后进入“网站设置”后拉到最下面“不安全内容”选允许。这才能正常使用调试工具。呃。。。


在调试工具测试一切正常了,那就开始申请接入吧。去到open.baidu.com提交信息,提交后等了一会提示不通过,原因是找不到jump_url?什么情况?在调试工具里面返回是正常的啊。。。最后看了老半天,发现示例代码有坑。返回的是

$res['data'] = array(
        'item_list' => array(
            'title'     => "故宫博物院",
            'jump_url'  => "/path/to/pages3",
        ),
);

其实并不需要item_list这一层。。。呃。。。那就去掉吧。。。

只要

$res['data'] = array(
    'title'     => "故宫博物院",
    'jump_url'  => "/path/to/pages3",
);

就行。


再提交,等了一会,又不通过。。。原因是返回的status非0?查了一下参数,发现审核请求的intent是空的,我的理解是既然你请求的是空的,那么我按找不到记录返回给你无结果的status=1是正确的啊,但是不行,那就改吧,直接把空intent的请求给返回首页的路径数据给他,就行了。


再提交,又过了一会,又不通过。。。。这次的原因是jump_url字段需要符合正则表达式请求类型为h5?呃?什么鬼?符合什么正则?我哪里配置正则了?问了百度小姐姐以后,才知道由于我的h5路径是使用#带的参数,这样不行,于是又特地更新了h5站点的参数标识。。。


再提交,又不行,这次是性能测试不合格。。。呃。。。也对,他们审核发起了30分钟,每秒100并发的查询,要求300毫秒内返回数据,我这1核1G的小机器哪里受得了。。。

于是马上去腾讯云买一台按量付费的4核8G机器,部署站点修改域名解析,折腾了一通,再提交,看着他压测,CPU好几次过了80%。。。过了30分钟,可以了。通过机审了,

修改域名解析回原来的服务器,释放临时机器,全程一个小时内搞定(部署环境花了十几分钟,被压测花了三十分钟),就花了差不多2块钱而已。

此时已经晚上9点了,小姐姐都下班了(晚上十二点多小姐姐估计半夜起床尿尿还给我回了一次消息)。


第二天,小姐姐上班,进入人审阶段,提出要小程序跟H5的体验对齐,由于我的网站是要求登录才可以使用,小程序由于自带登录功能,所以登录过程用户无感知,网站由于没有接口,所以需要手动登录。

这个小问题,直接在webhook接口返回的时候带个参数,通过这个参数进来的用户自动登录一个公用账号,小修改了一下网站的进入逻辑,跟小姐姐说了一声,顺利通过人审。


第三天,那位不说话的产品经理突然说他请求四五次才有一次返回?这不可能啊,马上测试一下,发现正常,跟那位经理说我这边正常,由于webhook接口跟小程序是在一个服务器上的,发了小程序给那个经理请他看看正常不,经理说小程序正常,可能是他的环境问题。

然后他就发单上线了。大概过了一会,问他要怎么才能看到那个opencard,他给了一个关键词,从百度H5版(百度APP也可以)搜索,发现可以看到那个卡片了,而且测试一切正常。


终于算是告一段落了。。。呼。。。真是够折腾的。。。本来以为一两个小时解决的问题,来来回回折腾了接近三天。。。


后续:可能是给的关键词太过冷门,发现几乎没什么流量是通过这个opencard过来的。。。呃。。。


发表我的评论

Hi,您需要填写昵称和邮箱!

  • 必填项