首页 > 编程问答 >Vonage 语音 API - 使用 python 出现错误

Vonage 语音 API - 使用 python 出现错误

时间:2024-07-26 12:13:42浏览次数:10  
标签:python environment-variables voice vonage

我正在尝试使用 vonage 语音 api 模拟语音通话。 我正在尝试使用 python 来做到这一点。 我创建了一个 .env 文件并更新了应用程序 id 和私钥值的值,而不是路径(不确定从哪里获取它)。

这是下面编写的代码:

#!/usr/bin/env python3
import os
from os.path import join, dirname
from pprint import pprint
import vonage
from dotenv import load_dotenv

dotenv_path = join(dirname(__file__), "../.env")
load_dotenv(dotenv_path)

VONAGE_APPLICATION_ID = os.environ.get("VONAGE_APPLICATION_ID")
VONAGE_APPLICATION_PRIVATE_KEY_PATH = os.environ.get("VONAGE_APPLICATION_PRIVATE_KEY_PATH")
FROM_NUMBER = os.environ.get("FROM_NUMBER")
TO_NUMBER = os.environ.get("TO_NUMBER")

client = vonage.Client(
    application_id=VONAGE_APPLICATION_ID,
    private_key=VONAGE_APPLICATION_PRIVATE_KEY_PATH,
)

response = client.voice.create_call({
  'to': [{'type': 'phone', 'number': TO_NUMBER}],
  'from': {'type': 'phone', 'number': FROM_NUMBER},
  'answer_url': ['https://raw.githubusercontent.com/nexmo-community/ncco-examples/gh-pages/text-to-speech.json']
})

pprint(response)

我得到的错误如下:

Traceback (most recent call last):
  File "/usr/local/lib/python3.7/site-packages/vonage/client.py", line 396, in _generate_application_jwt
    return self._jwt_client.generate_application_jwt(self._jwt_claims)
AttributeError: 'Client' object has no attribute '_jwt_client'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "make-an-outbound-call.py", line 24, in <module>
    'answer_url': ['https://raw.githubusercontent.com/nexmo-community/ncco-examples/gh-pages/text-to-speech.json']
  File "/usr/local/lib/python3.7/site-packages/vonage/voice.py", line 28, in create_call
    return self._client.post(self._client.api_host(), "/v1/calls", params or kwargs, auth_type=Voice.auth_type)
  File "/usr/local/lib/python3.7/site-packages/vonage/client.py", line 246, in post
    self._request_headers['Authorization'] = self._create_jwt_auth_string()
  File "/usr/local/lib/python3.7/site-packages/vonage/client.py", line 392, in _create_jwt_auth_string
    return b"Bearer " + self._generate_application_jwt()
  File "/usr/local/lib/python3.7/site-packages/vonage/client.py", line 400, in _generate_application_jwt
    'JWT generation failed. Check that you passed in valid values for "application_id" and "private_key".'
vonage.errors.ClientError: JWT generation failed. Check that you passed in valid values for "application_id" and "private_key".```

错误消息“JWT 生成失败。检查是否为“application_id”和“private_key”传递了有效值”以及 AttributeError:“Client”对象没有属性“_jwt_client”,表明的私钥的实现不正确在你的 Python 代码中使用 Vonage 语音 API。不应该直接将私钥作为字符串传递。相反,Vonage Python 库希望提供私钥文件的 路径

以下是更正代码的分步指南:

  1. 存储的私钥:
  2. 将的 private.key 文件(从 Vonage 仪表板的“创建应用程序”部分下载)放在的项目目录中。出于安全原因,不要将此文件提交到的版本控制系统。

  3. 更新的 .env 文件:

  4. .env 文件中删除 VONAGE_APPLICATION_PRIVATE_KEY_PATH 变量。
  5. 添加一个名为 VONAGE_APPLICATION_PRIVATE_KEY_FILE 的新变量,并在其中存储 private.key 文件的路径,例如:

    VONAGE_APPLICATION_ID="YOUR_VONAGE_APPLICATION_ID" VONAGE_APPLICATION_PRIVATE_KEY_FILE="path/to/your/private.key" FROM_NUMBER="YOUR_VONAGE_NUMBER" TO_NUMBER="RECIPIENT_NUMBER"

  6. 更正的 Python 代码:

  7. 使用 VONAGE_APPLICATION_PRIVATE_KEY_FILE 环境变量加载私钥文件路径。
  8. 使用此路径在初始化 vonage.Client 时传递私钥。

    ```python #!/usr/bin/env python3 import os from os.path import join, dirname from pprint import pprint import vonage from dotenv import load_dotenv

    dotenv_path = join(dirname( file ), "../.env") load_dotenv(dotenv_path)

    VONAGE_APPLICATION_ID = os.environ.get("VONAGE_APPLICATION_ID") VONAGE_APPLICATION_PRIVATE_KEY_FILE = os.environ.get("VONAGE_APPLICATION_PRIVATE_KEY_FILE") FROM_NUMBER = os.environ.get("FROM_NUMBER") TO_NUMBER = os.environ.get("TO_NUMBER")

    client = vonage.Client( application_id=VONAGE_APPLICATION_ID, private_key=open(VONAGE_APPLICATION_PRIVATE_KEY_FILE, 'r').read(), )

    response = client.voice.create_call({ 'to': [{'type': 'phone', 'number': TO_NUMBER}], 'from': {'type': 'phone', 'number': FROM_NUMBER}, 'answer_url': ['https://raw.githubusercontent.com/nexmo-community/ncco-examples/gh-pages/text-to-speech.json'] })

    pprint(response) ```

通过这些更改,的代码现在应该能够正确加载的私钥,并且应该不再遇到与 JWT 相关的错误。始终记住将的私钥保密,切勿将其提交到公共代码存储库。

标签:python,environment-variables,voice,vonage
From: 78796142

相关文章

  • 数据清洗与预处理:使用 Python Pandas 库
    数据清洗与预处理:使用PythonPandas库1.简介数据清洗与预处理是数据科学和机器学习中必不可少的步骤。它涉及识别和处理原始数据中的错误、不一致和缺失值,以确保数据的质量和可靠性。Python的Pandas库提供了强大的工具,简化了数据清洗和预处理的过程。2.数据加载与探索......
  • 【Python】成功解决:`FileExistsError: [Errno 17] File exists: ‘xxx’`
    【Python】成功解决:FileExistsError:[Errno17]Fileexists:‘xxx’在Python编程中,处理文件和目录是常见的任务之一。然而,当我们尝试执行某些文件操作,如创建新文件或目录时,如果目标文件或目录已经存在,就可能会遇到FileExistsError异常。这个错误通常伴随着消息[Errno1......
  • (三)Python基本数据类型
    Python的基本数据类型包括整数类型、浮点数类型和复数类型。下面分别介绍这些数据类型以及数值运算操作符和数值运算函数。整数类型(int):整数类型表示没有小数部分的数字,可以是正数、负数或零。例如:a=5b=-3c=02.浮点数类型(float):浮点数类型表示有小数部分的数字,可以......
  • 【Python自动化办公】用Pandas库自动化操作Excel表格,从读取、写入到数据处理和分析
    文末免费赠送精品编程资料~~前言Python的第三方Pandas库是数据处理和分析中的利器,其强大的功能可以帮助我们轻松地对Excel表格进行自动化操作。接下来,我们将介绍九个用Pandas库操作Excel的编程例子,并且每个例子都会涉及不同的知识点,确保全面掌握这个主题。1.读取和写入E......
  • 总结24个Python接单赚钱平台与详细教程,兼职月入5000+
    如果说当下什么编程语言最靠谱或者比较适合搞副业?答案肯定100%是:Python。python是所有语法中最简单易上手的语言,不需要特别的的英语词汇量,逻辑思维也不需要很差就能上手。而且学会了之后就能编写代码爬取各种数据,制作各种图表,提升工作效率。而且还能利用业余时间接点私活......
  • python安装第三方库的国内镜像
    直接:pipconfigsetglobal.index-urlhttps://pypi.doubanio.com/simple设置了全局的第三方库的下载文件镜像请求网址。安装第三方库:pipinstallscrapy--scrapy第三方库名称 pip从国内镜像安装的命令使用中国大陆地区的Python包镜像服务时,可以通过修改p......
  • 如何将Python嵌入.Net?
    我尝试基于文档此处和此处使用pythonnet将Python嵌入到.Net中。这是我的代码Runtime.PythonDLL=@"D:\Dev\Console\.conda\python311.dll";PythonEngine.Initialize();dynamicsys=Py.Import("sys");Console.WriteLine("Pythonversion:&quo......
  • 使用pybind11封装c++的dll,供python调用
    用pip安装好pybind11 文件清单,都写在一个目录里//文件名:add.cppextern"C"doubleadd(doublein1,doublein2){returnin1+in2;}//文件名:sub.cppextern"C"doublesub(doublein1,doublein2){returnin1-in2;}//文件名:mul.cppextern"......
  • python-myStudyList
     1  下载软件1.1下载python最新版本并安装下载地址:百度搜索python官网。WelcometoPython.org。 1.2官网学习网页:PythonTutorials–RealPython   1.3也可以下载集成环境软件Anaconda。 Anaconda软件商城官方正版免费下载(msc23.cn) 2 ......
  • Python语法基础
    基本语句输入input() eg:输出print(内容)注释单行注释:#注释内容多行注释:"""注释内容"""数据类型: 字面量:整型、浮点数、字符串......intfloatstring查看数据类型:type(数据)查看数据类型 转换函数int(x):将x转换成整数类型float(x):将x转......