博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
如何用PYTHON调用云小蜜
阅读量:6913 次
发布时间:2019-06-27

本文共 2583 字,大约阅读时间需要 8 分钟。

本文转载至农民小飞侠的CSDN博客:https://blog.csdn.net/w5688414/article/details/79317534 如禁止转载请联系删除。

最近有一个项目需要调用阿里云小蜜,我就拿python调用了一下,然后在官网居然没有找到很好的sample code。就只能自己硬着头皮写一下啦

import base64import urllib.parseimport hmacfrom hashlib import sha1import requestsimport uuidimport timeimport hmac,sslALIYUN_ACCESS_KEY_ID="your id"ALIYUN_ACCESS_KEY_SECRET="your secret" # 解决 访问ssl网站证书的问题try:    _create_unverified_https_context = ssl._create_unverified_contextexcept AttributeError:    # Legacy Python that doesn't verify HTTPS certificates by default    passelse:    # Handle target environment that doesn't support HTTPS verification    ssl._create_default_https_context = _create_unverified_https_context D = {    'Format':'JSON',    'Version':'2017-10-11',    'SignatureMethod':'HMAC-SHA1'    }timestamp = time.strftime("%Y-%m-%dT%H:%M:%SZ", time.gmtime())D['SignatureNonce']=str(uuid.uuid1())D['SignatureVersion']=1.0D['AccessKeyId']=ALIYUN_ACCESS_KEY_IDD['Timestamp']=timestamp  def percent_encode(encodeStr):    encodeStr = str(encodeStr)    res = urllib.parse.quote(encodeStr)    res = res.replace('+', '%20')    res = res.replace('*', '%2A')    res = res.replace('%7E', '~')    return res def sign(parameters):    sortedParameters = sorted(parameters.items(), key=lambda parameters: parameters[0])    print(sortedParameters)    canonicalizedQueryString = ''    for (k, v) in sortedParameters:        canonicalizedQueryString += '&' + percent_encode(k) + '=' + percent_encode(v)    stringToSign = 'GET&%2F&' + percent_encode(canonicalizedQueryString[1:])  # 使用get请求方法    bs = ALIYUN_ACCESS_KEY_SECRET + '&'    bs = bytes(bs, encoding='utf8')    stringToSign = bytes(stringToSign, encoding='utf8')    h = hmac.new(bs, stringToSign, sha1)    # 进行编码    signature = base64.b64encode(h.digest()).strip()    return signature D['Action']="Chat"D['InstanceId']="your instance id" #你阿里云的机器人实例idD['Utterance']="电脑黑屏了怎么办"D['Signature'] = sign(D)  sortedParameters = sorted(D.items(), key=lambda D: D[0])# print(D["Signature"])# print(sortedParameters) url = 'https://chatbot.cn-shanghai.aliyuncs.com/?' + urllib.parse.urlencode(sortedParameters)print(url)r = requests.get(url)print(r.text)

 

运行成功了,我的输出为:

{"SessionId":"672d532e9e1e40c09563828f54ee5b05","Messages":[{"Text":{},"Type":"Knowledge","Knowledge":{"Id":"74952","Content":"亲,先确认一下是否是没有接入电源,电量过低导致的黑屏,如果不是请到IT服务台报修,IT管理员会根据检测情况处理哦。","AnswerSource":"KnowledgeBase","Title":"电脑黑屏了怎么办","Summary":"亲,先确认一下是否是没有接入电源,电量过低导致的黑屏,如果不是请到IT服务台报修,IT管理员会根据检测情况处理哦。"}}],"MessageId":"0bb0e211d48d42acaf7f6e1924f7482c","RequestId":"D241002A-FADE-4C86-8180-9CD0B857017E"}
你可能感兴趣的文章
洛谷 P2717 寒假作业
查看>>
xampp的安装和配置与HBuilder的配置--博客园老牛大讲堂
查看>>
OpenStack 多节点纳管 vCenter 5.5
查看>>
kafka快速入门
查看>>
1L - ASCII码排序
查看>>
jquery中的append和appendTo用法
查看>>
1172: 零起点学算法79——统计单词个数
查看>>
(转)asp.net页面跳转的三种方法比较
查看>>
CSS之文本
查看>>
结对编程——代码审查
查看>>
poj 2549 Sumsets
查看>>
【HDU 6153】A Secret (KMP)
查看>>
strcpy vs. strcat strncpy vs. strncat
查看>>
docker-compose no such image
查看>>
关于DOM的理解
查看>>
windows安装redis并设置别名
查看>>
触发器修改后保存之前的数据 表中插入数据时ID自动增长
查看>>
HDU 1253 - 胜利大逃亡
查看>>
Oracle优化学习
查看>>
Educational Codeforces Round 55 (Rated for Div. 2)
查看>>