一、环境要求
-
Python 3
-
安装 SDK 核心库 OpenAPI ,使用pip安装包依赖:
pip install alibabacloud_tea_openapi
-
SDK 安装方式
- PyPI PIP:
pip install alibabacloud_chatbot20171011==2.0.1
- PyPI Anaconda:
conda install alibabacloud_chatbot20171011=2.0.1
- PyPI PIP:
二、实现代码
- sample demo 如下(涉及具体个人核心配置数据处,请对应自行修改填充)
# -*- coding: utf-8 -*-
# @ Date : 2022/1/27 16:27
# @ Author : RichardLau_Cx
# @ Project: Chatbot
# @ File : API_sample_new.py
# @ IDE : PyCharm
import ssl
import time
import uuid
import hmac
import base64
import requests
import urllib.parse
from hashlib import sha1
from Chatbot import configs # 自定义的配置数据信息文件
# 解决访问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
protocol = 'https://'
domain_name = 'chatbot.cn-shanghai.aliyuncs.com/'
Parameters = {
'Format': 'JSON',
'Version': '2017-10-11',
'AccessKeyId': configs.AccessKeyId,
'SignatureMethod': 'HMAC-SHA1',
'SignatureVersion': 1.0
}
def percent_encode(code):
"""
名称和值要使用 UTF-8 字符集进行 URL 编码,URL 编码的编码规则是:
1.字符 A-Z、a-z、0-9 以及字符“-”、“_”、“.”、“~”,不进行编码;
2.对于其他字符编码成“%XY”的格式,其中 XY 是字符对应 ASCII 码的 16 进制表示。比如英文的双引号对应的编码就是 “%22”;
3.对于扩展的 UTF-8 字符,编码成“%XY%ZA…”的格式;
4.注意英文空格要被编码成 “%20”,而不是加号“+”。
:param code: 待编码串
:return: 编码字符串
"""
# result = urllib.parse.quote(str(code))
encode = str(code)
result = urllib.parse.quote(encode)
result = result.replace('+', '%20')
result = result.replace('/', '%2F')
result = result.replace('*', '%2A')
result = result.replace('%7E', '~')
return result
# print("/: " + percent_encode('/'))
def signature(params):
"""
签名机制
:param params: 公共请求参数
:return: 签名结果串
"""
# 1. 使用请求参数来构造规范化的请求字符串(Canonicalized Query String)
# 1.1 按照参数名称的字母顺序对请求中所有的请求参数进行排序
sorted_params = sorted(params.items()