腾讯AI开放平台的接口调用指南

最近无意发现腾讯AI开放平台上提供了大量好玩的人工智能云服务,而且是完全免费的。只需要用QQ号登录即可。这么好的东西,作为一个程序员,当然要试试了!

从上图可以看出腾讯AI开放平台提供的人工智能服务主要有自然语言处理,计算机视觉和智能语音三大类。我当然是从最简单的自然语言处理开始学习。

这是腾讯AI开放平台的自然语言处理的API说明:

https://ai.qq.com/doc/nlpbase.shtml

其实也就是我们熟悉的Restful API调用:

新建一个PHP文件,把下面这个链接的源代码粘贴进去:

https://github.com/i042416/wechat/blob/master/tencent/newfile.php

然后在Eclipse里Run As->PHP CLI Application,

即可看到下列输出:“腾讯AI开放平台”这个句子,已经被腾讯人工智能成功分词成了:腾讯,AI,开放,平台。

下面就来解释下PHP代码的主要逻辑。

$appkey = 'LHGNH0usjUTRRRSA';

$params = array(

    'app_id' => '2107823355',

    'time_stamp' => strval(time()),

     'nonce_str' => strval(rand()),

     'text' => '腾讯AI开放平台',

     'sign' => '',

);

第一行和第四行分别为我在腾讯AI平台上创建的测试应用的key和ID。第五行是发起请求的时间戳,第六行用rand()生成了一个随机数,第七行为希望使用腾讯AI人工智能分词的输入句子,第8行sign是一个需要动态计算出的签名值。

这个签名值在下列PHP函数调用里计算:

$params'sign' = getReqSign($params, $appkey);

现在进入getRegSign内部:

首先执行ksort对PHP的key-value数组$params按照key进行升序排序,可以比较上图升序排序前和下图排序后的顺序:

接着把字典里每个key-value键值对用key=value&key=value...这种形式连接起来,注意text值需要用urlencode进行编码。

最后把连接好的字符串用md5函数计算出MD5哈希值,然后用strtoupper转成大写,这就是计算好的签名值。

最后一步就是调用doHttpPost发送请求。

Post请求的fields仍然是key=value&key=value这种类型的键值对,参考下面调试器里的截图:

为方便您的参考,我把调试器里显示的$body记录在下面:

app_id=2107823355&time_stamp=1533960023&nonce_str=12169&text=%CC%DA%D1%B6AI%BF%AA%B7%C5%C6%BD%CC%A8&sign=EA9CAC254A17729B20FAF28757E775DD

最后发送请求,得到结果:

curl_setopt($curl, CURLOPT_HEADER, false);

curl_setopt($curl, CURLOPT_NOBODY, false);

curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, true);

curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);

$response = curl_exec($curl);

if ($response === false) {

    $response = false;

    break;

}

$code = curl_getinfo($curl, CURLINFO_HTTP_CODE);

if ($code != 200) {

    $response = false;

    break;

}

要获取更多Jerry的原创技术文章,请关注公众号"汪子熙"或者扫描下面二维码:

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏老秦求学

深入理解计算机系统读书笔记之第一章:漫游

我是从豆瓣上看到好多人都在推荐这本书,于是就去借来读一读,昨天晚上用了好长时间来读这本书的第一章节,感觉这本书比较符合我(有些基础还不太明白,这本书详细的进行了...

3047
来自专栏java工会

依赖注入原理---IoC框架

2314
来自专栏开源优测

[大数据测试]ETL测试或数据仓库测试入门

概述 在我们学习ETL测试之前,先了解下business intelligence(即BI)和数据仓库。 什么是BI? BI(Business Intelli...

2774
来自专栏开源优测

大数据测试之ETL测试入门

概述 在我们学习ETL测试之前,先了解下business intelligence(即BI)和数据仓库。 什么是BI? BI(Business Intell...

6618
来自专栏Golang语言社区

在 Go 语言中,如何正确的使用并发

Glyph Lefkowitz最近写了一篇启蒙文章,其中他详细的说明了一些关于开发高并发软件的挑战,如果你开发软件但是没有阅读这篇问题,那么我建议你阅读一篇。这...

2010
来自专栏乐沙弥的世界

Python简介

版权声明:本文为博主原创文章,欢迎扩散,扩散请务必注明出处。

1813
来自专栏Golang语言社区

【Go 语言社区】在 Go 语言中,如何正确的使用并发

Glyph Lefkowitz最近写了一篇启蒙文章,其中他详细的说明了一些关于开发高并发软件的挑战,如果你开发软件但是没有阅读这篇问题,那么我建议你阅读一篇。这...

3589
来自专栏玩转全栈

flutter中使用BloC模式

BloC【Business Logic Component】模式是paolo soares 和 cong hui 在2018年Google dartconf上提...

7.6K7
来自专栏开源优测

[大数据测试]ETL测试或数据仓库测试入门

概述 在我们学习ETL测试之前,先了解下business intelligence(即BI)和数据仓库。 什么是BI? BI(Business Intellig...

3035
来自专栏Python中文社区

用Python玩转微信的正确姿势!

0. itchat 最近研究了一些微信的玩法,我们可以通过网页版的微信微信网页版,扫码登录后去抓包爬取信息,还可以post去发送信息。 然后发现了itchat这...

5768

扫码关注云+社区

领取腾讯云代金券