如何用PYTHON调用云小蜜

简介: 利用python调用云小蜜创建客服

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


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



import base64

import urllib.parse

import hmac

from hashlib import sha1

import requests

import uuid

import time

import hmac,ssl

ALIYUN_ACCESS_KEY_ID="your id"

ALIYUN_ACCESS_KEY_SECRET="your secret"

 

# 解决 访问ssl网站证书的问题

try:

    _create_unverified_https_context = ssl._create_unverified_context

except AttributeError:

    # Legacy Python that doesn't verify HTTPS certificates by default

    pass

else:

    # 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.0

D['AccessKeyId']=ALIYUN_ACCESS_KEY_ID

D['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" #你阿里云的机器人实例id

D['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"}



相关实践学习
阿里巴巴智能语音交互技术与应用
智能语音交互,是基于语音识别、语音合成、自然语言理解等技术,为企业在多种实际应用场景下,赋予产品“能听、会说、懂你”式的智能人机交互体验。适用于多个应用场景中,包括智能问答、智能质检、法庭庭审实时记录、实时演讲字幕、访谈录音转写等。 本课程主要讲解智能语音相关技术,包括语音识别、人机交互、语音合成等。  
相关文章
|
数据采集 JSON 搜索推荐
Python 调用Zoomeye搜索接口
钟馗之眼是一个强大的搜索引擎,不同于百度谷歌,它主要收集网络中的主机,服务等信息,国内互联网安全厂商知道创宇开放了他们的海量数据库,对之前沉淀的数据进行了整合、整理,打造了一个名符其实的网络空间搜索引擎ZoomEye,运用Python接口可以灵活的实现数据采集。
278 0
Python 调用Zoomeye搜索接口
|
数据安全/隐私保护 Python
python接口自动化(三十四)-封装与调用--函数和参数化(详解)
参数化的思维只需记住一点:不要写死,这样就便于维护,否则就会牵一发而动全身,一处修改导致处处修改,不便于维护。
1204 1
python接口自动化(三十四)-封装与调用--函数和参数化(详解)
|
Java C# 决策智能
运筹优化学习09:一个示例带你入门如何使用C++、C#、Java、Python、Matlab调用Cplex(下)
运筹优化学习09:一个示例带你入门如何使用C++、C#、Java、Python、Matlab调用Cplex
运筹优化学习09:一个示例带你入门如何使用C++、C#、Java、Python、Matlab调用Cplex(下)
|
Java 测试技术 C#
运筹优化学习09:一个示例带你入门如何使用C++、C#、Java、Python、Matlab调用Cplex(上)
运筹优化学习09:一个示例带你入门如何使用C++、C#、Java、Python、Matlab调用Cplex
运筹优化学习09:一个示例带你入门如何使用C++、C#、Java、Python、Matlab调用Cplex(上)
|
NoSQL Redis 开发工具
python调用redis-cell(CL.THROTTLE)
python调用redis-cell(CL.THROTTLE)
254 0
python调用redis-cell(CL.THROTTLE)
|
Linux Python
linux qt 项目中QProcess调用命令行命令执行python脚本
linux qt 项目中QProcess调用命令行命令执行python脚本
linux qt 项目中QProcess调用命令行命令执行python脚本
|
数据管理 测试技术 API
python接口自动化(三十七)-封装与调用--读取excel 数据(详解)
在进行软件接口测试或设计自动化测试框架时,一个不比可避免的过程就是: 参数化,在利用python进行自动化测试开发时,通常会使用excel来做数据管理,利用xlrd、xlwt开源包来读写excel。例如:当我们登录的账号有多个的时候,我们一般用 excel 存放测试数据,本篇文章介绍,python 读取excel 方法,并保存为字典格式。
386 0
python接口自动化(三十七)-封装与调用--读取excel 数据(详解)
|
jenkins 测试技术 持续交付
python接口自动化(三十六)-封装与调用--流程类接口关联续集(详解)
上一篇已经给大家都介绍过了流程类接口关联,但是由于博客的登录机制改变,所以没有办法给小伙伴们实战演练一下,那么这篇就按照上一篇计划的用jenkins来给小伙伴们演示一下流程类接口的封装和调用,其实很简单,就是用上一篇和前边这篇传送门的代码稍稍修改即可。不知道你自己练习了么,如果练习了,可以看看和我有什么不同,没练习的看看自己思路和我有啥不一样。好了废话少说进入主题
205 0
python接口自动化(三十六)-封装与调用--流程类接口关联续集(详解)
|
jenkins 测试技术 持续交付
python接口自动化(三十五)-封装与调用--流程类接口关联(详解)
流程相关的接口,主要用 session 关联,如果写成函数(如上篇),s 参数每个函数都要带,每个函数多个参数,这时候封装成类会更方便。在这里我们还是以博客园为例,带着小伙伴们实践一下。
395 0
python接口自动化(三十五)-封装与调用--流程类接口关联(详解)
|
机器学习/深度学习 算法 Python
如何用Python计算特征重要性?(三)
如何用Python计算特征重要性?(三)
549 0
如何用Python计算特征重要性?(三)