pythonpython-3.xsslssl-certificatevonage

How to authenticate nexmo voice client?


I am trying to make an outbound call using Nexmo (Vonage) API. To access the API, I am required to authenticate my client using an application id and a private key (given to me as a .key file).

The application id was specified as a string and the private key was specified as a path.

client = nexmo.Client(application_id = 'xxxxxx-xxxxxxx', private_key = "C:\\path\\to\\folder\\private.key")

I get the following error.

  File "test_bot.py", line 30, in <module>
    'ncco': ncco
  File "C:\Users\vishn\AppData\Local\Programs\Python\Python37-32\lib\site-packages\wrapt\wrappers.py", line 606, in __call__
    args, kwargs)
  File "C:\Users\vishn\AppData\Local\Programs\Python\Python37-32\lib\site-packages\deprecated\classic.py", line 285, in wrapper_function
    return wrapped_(*args_, **kwargs_)
  File "C:\Users\vishn\AppData\Local\Programs\Python\Python37-32\lib\site-packages\nexmo\__init__.py", line 427, in create_call
    return self._jwt_signed_post("/v1/calls", params or kwargs)
  File "C:\Users\vishn\AppData\Local\Programs\Python\Python37-32\lib\site-packages\nexmo\__init__.py", line 719, in _jwt_signed_post
    self.api_host(), self.session.post(uri, json=params, headers=self._headers())
  File "C:\Users\vishn\AppData\Local\Programs\Python\Python37-32\lib\site-packages\nexmo\__init__.py", line 742, in _headers
    return dict(self.headers, Authorization=b"Bearer " + token)
TypeError: can't concat str to bytes

Solution

  • Diana from Vonage here.

    The fix is already on the way. However i noticed that this occurs only with pyjwt 2.0.