Crie suas Applications, usuários e tokens
Para usar o Client SDK, há três coisas que você precisa configurar antes de começar:
- Aplicativo Vonage - uma Application que contém a configuração do aplicativo que você está desenvolvendo.
- Usuário - Um usuário é um objeto que identifica um usuário único da Vonage no contexto de uma Application da Vonage e pode ser considerado um ponto final de comunicação. A Vonage permite que essas instâncias de usuário se comuniquem entre si.
- Normalmente, um usuário tem uma correspondência de 1 para 1 com um usuário no banco de dados de usuários do seu aplicativo.
- Para que uma pessoa possa se comunicar por meio de uma Conversação, é necessário que um objeto Usuário seja criado primeiro. Quando o objeto Usuário é criado, é atribuído a ele um ID de usuário exclusivo.
- JSON Web Tokens, JWTs - O Vonage Client SDK utiliza JWTs para autenticação. Para que um usuário possa fazer login e utilizar as funcionalidades do Client SDK, é necessário fornecer um JWT por usuário. Os JWTs contêm todas as informações de que a plataforma da Vonage precisa para autenticar as solicitações, bem como informações como os Applications, usuários e permissões associados.
Todos esses podem ser criado pelo seu backend. Se você quiser começar e experimentar o uso do SDK imediatamente, também pode implantar um aplicativo de back-end para uso com o Client SDK usando o Modelo de servidor de exemplo do Client SDK. Caso contrário, este tutorial vai mostrar como fazer isso, usando o CLI da Vonage.
Pré-requisitos
Certifique-se de ter o seguinte:
- Um account da Vonage - inscreva-se
- Node.JS e o NPM instalado
- Instale o CLI da Vonage.
Criar uma aplicação da Vonage
Agora você precisa criar um aplicativo Vonage. Neste exemplo, você criará um aplicativo capaz de lidar com o caso de uso de In-App Voice.
- Primeiro, crie o diretório do seu projeto, caso ainda não tenha feito isso.
- Vá para o diretório do projeto que você acabou de criar.
- Use os comandos a seguir para criar e configurar um aplicativo Vonage com recursos de voz e WebRTC. Substitua
as URLs dos webhooks pelas suas. Se a sua plataforma restringir o tráfego de entrada que pode receber por meio de
intervalos de endereços IP, você precisará adicionar o Endereços IP da Vonage
à sua lista de permissões. Os endereços IP podem ser obtidos programaticamente enviando uma solicitação GET para
https://api.nexmo.com/ips-v4.
vonage apps create 'Your application'
✅ Creating Application
Saving private key ... Done!
Application created
Name: Your application
Application ID: 00000000-0000-0000-0000-000000000000
Improve AI: Off
Private/Public Key: Set
Capabilities:
None Enabled
vonage apps create 'Your application'
✅ Creating Application
Saving private key ... Done!
Application created
Name: Your application
Application ID: 00000000-0000-0000-0000-000000000000
Improve AI: Off
Private/Public Key: Set
Capabilities:
None Enabled
Adicionar recursos de voz:
vonage apps capabilities update 00000000-0000-0000-0000-000000000000 voice `
--voice-answer-url='https://example.com/webhooks/voice/answer' `
--voice-event-url='https://example.com/webhooks/voice/event' `
--voice-fallback-url='https://example.com/webhooks/voice/fallback'
✅ Fetching Application
✅ Adding voice capability to application 00000000-0000-0000-0000-000000000000
Name: Your application
Application ID: 00000000-0000-0000-0000-000000000000
Improve AI: Off
Private/Public Key: Set
Capabilities:
VOICE:
Uses Signed callbacks: On
Conversation TTL: 41 hours
Leg Persistence Time: 6 days
Event URL: [POST] https://example.com/webhooks/voice/event
Answer URL: [POST] https://example.com/webhooks/voice/answer
Fallback URL: [POST] https://example.com/webhooks/voice/fallback
vonage apps capabilities update 00000000-0000-0000-0000-000000000000 voice ^
--voice-answer-url='https://example.com/webhooks/voice/answer' ^
--voice-event-url='https://example.com/webhooks/voice/event' ^
--voice-fallback-url='https://example.com/webhooks/voice/fallback'
✅ Fetching Application
✅ Adding voice capability to application 00000000-0000-0000-0000-000000000000
Name: Your application
Application ID: 00000000-0000-0000-0000-000000000000
Improve AI: Off
Private/Public Key: Set
Capabilities:
VOICE:
Uses Signed callbacks: On
Conversation TTL: 41 hours
Leg Persistence Time: 6 days
Event URL: [POST] https://example.com/webhooks/voice/event
Answer URL: [POST] https://example.com/webhooks/voice/answer
Fallback URL: [POST] https://example.com/webhooks/voice/fallback
Adicionar recursos de RTC
vonage apps capabilities update 00000000-0000-0000-0000-000000000000 messages `
--messages-inbound-url='https://example.com/messages/inboud' `
--messages-status-url='https://example.com/messages/status' `
--messages-version='v1' `
--no-messages-authenticate-media
✅ Fetching Application
✅ Adding messages capability to application 00000000-0000-0000-0000-000000000000
Name: Your application
Application ID: 00000000-0000-0000-0000-000000000000
Improve AI: Off
Private/Public Key: Set
Capabilities:
MESSAGES:
Authenticate Inbound Media: Off
Webhook Version: v1
Status URL: [POST] https://example.com/messages/status
Inbound URL: [POST] https://example.com/messages/inboud
vonage apps capabilities update 00000000-0000-0000-0000-000000000000 messages ^
--messages-inbound-url='https://example.com/messages/inboud' ^
--messages-status-url='https://example.com/messages/status' ^
--messages-version='v1' ^
--no-messages-authenticate-media
✅ Fetching Application
✅ Adding messages capability to application 00000000-0000-0000-0000-000000000000
Name: Your application
Application ID: 00000000-0000-0000-0000-000000000000
Improve AI: Off
Private/Public Key: Set
Capabilities:
MESSAGES:
Authenticate Inbound Media: Off
Webhook Version: v1
Status URL: [POST] https://example.com/messages/status
Inbound URL: [POST] https://example.com/messages/inboud
O aplicativo é então criado. Um arquivo de chave privada private.key também é criado.
A criação de uma aplicação e os recursos da aplicação são abordados em detalhes no guia de inscrição.
Criar um usuário
Crie um usuário que fará login no Vonage Client e utilizará as funcionalidades do Vonage Client SDK: conversas, chamadas e assim por diante.
Execute o seguinte comando no seu terminal para criar uma usuária chamada Alice:
vonage users create `
--name='Alice'
✅ Creating User
User ID: USR-00000000-0000-0000-0000-000000000000
Name: Alice
Display Name: Not Set
Image URL: Not Set
Time to Live: Not Set
Channels:
None Set
vonage users create ^
--name='Alice'
✅ Creating User
User ID: USR-00000000-0000-0000-0000-000000000000
Name: Alice
Display Name: Not Set
Image URL: Not Set
Time to Live: Not Set
Channels:
None Set
O ID do usuário é utilizado pelo SDK para realizar tarefas, como fazer login, iniciar uma chamada e outras.
Gerar um JWT de usuário
JWTs são usados para autenticar um usuário no Client SDK.
Para gerar um JWT para a Alice, execute o seguinte comando (substituindo pelos seus dados):
# A command with parameters
vonage jwt create `
--app-id='00000000-0000-0000-0000-000000000000' `
--private-key=./private.key `
--sub='Alice' `
--acl='{\"paths\":{\"\/*\/users\/**\":{},\"\/*\/conversations\/**\":{},\"\/*\/sessions\/**\":{},\"\/*\/devices\/**\":{},\"\/*\/push\/**\":{},\"\/*\/knocking\/**\":{},\"\/*\/legs\/**\":{}}}'
# Will produce a token
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJhY2wiOnsicGF0aHMiOnsiLyovcnRjLyoqIjp7fSwiLyovdXNlcnMvKioiOnt9LCIvKi9jb252ZXJzYXRpb25zLyoqIjp7fSwiLyovc2Vzc2lvbnMvKioiOnt9LCIvKi9kZXZpY2VzLyoqIjp7fSwiLyovcHVzaC8qKiI6e30sIi8qL2tub2NraW5nLyoqIjp7fSwiLyovbGVncy8qKiI6e319fSwiZXhwIjoxNzQxMTgyMzA3LCJzdWIiOiJBbGljZSIsImp0aSI6Ijg1MTViNzk2LTA1YjktNGFkMS04MTRkLTE1NWZjZTQzZWM1YiIsImlhdCI6MTc0MTE4MTQwNywiYXBwbGljYXRpb25faWQiOiIwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAifQ.BscMdDXZ1-nuLtKyPJvw9tE8E8ZjJvTPJPMT9y0TjPz4Q7qqNaqxcjglc5QPtYEjh2YpZH6btSKbUF4XTClI026Hl5_QOBlnayYo7jXwhba16fa5PeyzSf30QFGFrHbANwrQJFVCjd329SZUpwK4GxgB1gf230NhbfmkhegKezqicru2WTGCKm8kQncYliFwIEYUlcRAb2c8xcaVrn_6QNNahyeJRwGFfWpIkX0Oe-S4RDlPjoq47_gYWac9MmaetB4Dd3Yp531AuniGV5JiIShkaEwuY4Zyov4Hcmajm4Lm_UFY119la7vzHis0P7cT9pPUDe5cyPj7eT8-VhitfQ
REM A command with parameters
vonage jwt create ^
--app-id='00000000-0000-0000-0000-000000000000' ^
--private-key=./private.key ^
--sub='Alice' ^
--acl="{\"paths\":{\"\/*\/users\/**\":{},\"\/*\/conversations\/**\":{},\"\/*\/sessions\/**\":{},\"\/*\/devices\/**\":{},\"\/*\/push\/**\":{},\"\/*\/knocking\/**\":{},\"\/*\/legs\/**\":{}}}"
REM Will produce a token
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJhY2wiOnsicGF0aHMiOnsiLyovcnRjLyoqIjp7fSwiLyovdXNlcnMvKioiOnt9LCIvKi9jb252ZXJzYXRpb25zLyoqIjp7fSwiLyovc2Vzc2lvbnMvKioiOnt9LCIvKi9kZXZpY2VzLyoqIjp7fSwiLyovcHVzaC8qKiI6e30sIi8qL2tub2NraW5nLyoqIjp7fSwiLyovbGVncy8qKiI6e319fSwiZXhwIjoxNzQxMTgyMzA3LCJzdWIiOiJBbGljZSIsImp0aSI6Ijg1MTViNzk2LTA1YjktNGFkMS04MTRkLTE1NWZjZTQzZWM1YiIsImlhdCI6MTc0MTE4MTQwNywiYXBwbGljYXRpb25faWQiOiIwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAifQ.BscMdDXZ1-nuLtKyPJvw9tE8E8ZjJvTPJPMT9y0TjPz4Q7qqNaqxcjglc5QPtYEjh2YpZH6btSKbUF4XTClI026Hl5_QOBlnayYo7jXwhba16fa5PeyzSf30QFGFrHbANwrQJFVCjd329SZUpwK4GxgB1gf230NhbfmkhegKezqicru2WTGCKm8kQncYliFwIEYUlcRAb2c8xcaVrn_6QNNahyeJRwGFfWpIkX0Oe-S4RDlPjoq47_gYWac9MmaetB4Dd3Yp531AuniGV5JiIShkaEwuY4Zyov4Hcmajm4Lm_UFY119la7vzHis0P7cT9pPUDe5cyPj7eT8-VhitfQ
O comando acima define, por padrão, o prazo de validade do JWT em 24 horas. Você pode alterar o prazo de validade para um período mais curto
usando o --exp bandeira.
NOTA: Em aplicativos em produção, espera-se que seu backend exponha um endpoint que gere um JWT de acordo com a solicitação do cliente.