腾讯云——语音消息

文章目录


前言

使用腾讯云语音消息之前需要安装sdk,本文以python sdk为例

python 复制代码
pip install tencentcloud-sdk-python

一、语音消息配置

创建一个配置文件

tencentVoicePhoneConfig.py

python 复制代码
# 腾讯云语音消息配置

# 地域信息
# 华北地区(北京) ap-beijing      华南地区(广州) ap-guangzhou
REGION = "ap-guangzhou"

# 实例化一个 http 选项,可选,无特殊需求时可以跳过
# POST 请求(默认为 POST 请求)
REQMETHOD = "POST"

# 请求超时时间,单位为秒(默认60秒)
REQTIMEOUT = 30

# 指定接入地域域名(默认就近接入)
ENDPOINT = "vms.tencentcloudapi.com"

# 实例化一个客户端配置对象,可以指定超时时间等配置
# 指定算法签名
SIGNMETHOD = "TC3-HMAC-SHA256"

# 指定接口返回的语言
LANGUAGE = "en-US"

# 国家码或地区码
COUNTRYCODE = "86"

# 用户session
SESSIONCONTEXT = ""

# 播放次数,可选,最多3次,默认2次
PLAYTIMES = 2

二、语音消息使用

注意secretId和secretKey被放入到了数据库中

secretId和secretKey的获取:

已开通语音消息服务,具体操作请参见 快速入门。

已准备依赖环境:Python 2.7, 3.6-3.9 版本。

已在访问管理控制台 > API密钥管理 页面获取 SecretID 和 SecretKey。

SecretID 用于标识 API 调用者的身份。

SecretKey 用于加密签名字符串和服务器端验证签名字符串的密钥,SecretKey 需妥善保管,避免泄露。

语音消息的调用地址为 vms.tencentcloudapi.com。

语音消息官方文档

tencent_voice_phone.py

注意paramset需要根据你申请的语音消息格式来确定

python 复制代码
from tencentcloud.common import credential
from tencentcloud.common.exception.tencent_cloud_sdk_exception import (
    TencentCloudSDKException,
)

# 导入 VMS 模块的 client models
from tencentcloud.vms.v20200902 import vms_client, models

# 导入可选配置类
from tencentcloud.common.profile.client_profile import ClientProfile
from tencentcloud.common.profile.http_profile import HttpProfile
from apps.system.models import Profile
from ops_monitor_admin.tencentVoicePhoneConfig import *
import logging

error_logger = logging.getLogger('tencent-error')
info_logger = logging.getLogger('tencent')

class TencentPhone():

    def __init__(self):
    	# 注意此处的cred 便是通过从数据库取出了secretId、secretKey
        self.tencent_config = Profile.objects.filter(name="tencent_voice_phone").first().configuration
        cred = credential.Credential(
            self.tencent_config.get("secretId"), self.tencent_config.get("secretKey")
        )
        clientProfile = self.create_http_profile()
        self.client = vms_client.VmsClient(cred, REGION, clientProfile)

    def create_http_profile(self):
        # 实例化一个 http 选项,可选,无特殊需求时可以跳过
        httpProfile = HttpProfile()
        httpProfile.reqMethod = REQMETHOD
        httpProfile.reqTimeout = REQTIMEOUT
        httpProfile.endpoint = ENDPOINT

        # 非必要步骤:
        # 实例化一个客户端配置对象,可以指定超时时间等配置
        clientProfile = ClientProfile()
        clientProfile.signMethod = SIGNMETHOD
        clientProfile.language = LANGUAGE
        clientProfile.httpProfile = httpProfile

        return clientProfile

    def send_voice_phone(self, paramset, phone):
        try:
            req = models.SendTtsVoiceRequest()

            req.TemplateId = self.tencent_config.get("TemplateId")
            req.TemplateParamSet = paramset
            req.CalledNumber = "+" + COUNTRYCODE + phone
            req.VoiceSdkAppid = self.tencent_config.get("VoiceSdkAppid")
            req.PlayTimes = PLAYTIMES
            req.SessionContext = SESSIONCONTEXT

            # 通过 client 对象调用 SendTtsVoice 方法发起请求,注意方法名与请求的对象是对应的
            rep = self.client.SendTtsVoice(req)
            if rep["Response"].get("Error"):
                error_logger.error(str({"code": rep["Response"]["code"], "msg": rep["Response"]["msg"], "paramset": paramset}))
            else:
                info_logger.info(str(rep) + str(paramset))

        except TencentCloudSDKException as e:
            error_logger.error(str(e))


tencent_phone = TencentPhone()

def create_voice_phone(paramset, mobile):
    # 各成员语音电话发信
    try:
        tencent_phone.send_voice_phone(paramset, mobile)
    except Exception as e:
        error_logger.error(str(e))

具体使用时只需要引入tencent_voice_phone.py中的create_voice_phone方法即可

python 复制代码
from tencent_voice_phone.py import create_voice_phone
paramset = [参数1, 参数2, 参数3 ....]# 根据申请格式来 
create_voice_phone(paramset, mobile) # mobile为手机号
相关推荐
腾讯云大数据19 小时前
腾讯云+TBDS+智算平台:多模态数据处理与机器学习一体化实践
大数据·机器学习·云计算·腾讯云
知已难寻20 小时前
00 · OpenStack 总纲——从云计算到 OpenStack 全景
运维·服务器·云原生·云计算·负载均衡·openstack·perl
大力财经20 小时前
山东山大华天软件与阿里云达成合作,旗下产品CrownCAD已接入Qoder
人工智能·阿里云·云计算
长不大的杨瑞杰21 小时前
OpenCode v2 多源上下文实战:Websearch、References、Attachments 与缓存预热
人工智能·安全·云计算·软件工程·devops
知已难寻2 天前
第 5 篇 · 云原生生态与实践:微服务、DevOps、可观测性与 Serverless
大数据·linux·服务器·微服务·云原生·云计算·devops
Vitaliy Kostrov(柯维远)2 天前
Multi-CDN 决策闭环:QoE、成本、安全与内容正确性如何进入同一个策略引擎?
安全·网络安全·云计算·音视频·负载均衡·cdn
长不大的杨瑞杰2 天前
OpenCode v2 远程开发实战:Web UI、Pair、SSH 隧道与 OpenTunnel 安全接入
人工智能·安全·云计算·软件工程·devops
T量子永生2 天前
Android SISO 分布式编译集群配置方案
android·分布式·云计算·源代码管理
whyutianict_vv2 天前
云计算 HCIE 认证体系解析:HCIA/HCIP/HCIE 三级科目与知识边界
linux·运维·云计算
知已难寻2 天前
第 2 篇 · 云的地基:服务器、存储、网络三大基础设施
运维·服务器·网络·云原生·云计算·负载均衡·1024程序员节