# Disparando um RCS

#### Endpoint

Para enviar uma campanha RCS, você deve fazer uma requisição do tipo `POST` para o endpoint `https://sistema.dchat.com.br/api/rcs/send` .

#### Autenticação

Você deve adicionar ao cabeçalho da requisição a sua API Token, através do cabeçalho `Authorization`. Se você ainda não possui sua chave, [veja aqui como criar uma](https://docs.dchat.com.br/books/rcs-api/page/autenticacao "Autenticação").

#### Corpo da Requisição

O body da sua requisição **deve ser no formato JSON** contendo obrigatoriamente os campos `fallback`, `callback`, `messages` e `tokens`, mas fique tranquilo que falaremos deles a seguir.

##### fallback

O campo `fallback` é do tipo `boolean`, ou seja, deve conter os valores `true` ou `false`. **Ele serve para identificar se devemos enviar um SMS para aparelhos que não tenham suporte ao RCS.**

<p class="callout info">Se você definir o `fallback` como `false`, o seu crédito será ressarcido assim que for verificado que o número não possuir suporte ao RCS.</p>

##### fallback\_message

O campo `fallback_message` determina qual será o SMS enviado caso o campo `fallback` seja `true`. O tamanho máximo desse campo segue o limite de um SMS, ou seja, **160 caracteres**.

<p class="callout info">É importante lembrar, que apesar do envio ser um SMS, ele é cobrado como um RCS.</p>

##### callback

Serve para identificar para o servidor qual a URL que deverá receber as notificações de envio e respostas de cada token.

##### messages

É um `array` de mensagens. Como existem vários tipos de mensagens e cada uma tem sua particularidade, elas foram tratadas em um [capítulo separado.](https://docs.dchat.com.br/books/rcs-api/chapter/tipos-de-mensagens "Tipos de Mensagens")

##### tokens

É um `array` de **`strings`** contendo os números que irão receber os RCS. O token pode ou não conter o DDI, caso ele não seja informado incluiremos o do Brasil por padrão.

<p class="callout warning">Lembre-se sempre de enviar os tokens entre aspas (").</p>

#### Exemplo de requisição

No exemplo a seguir, seriam enviadas três mensagens, uma contendo uma imagem, a outra um vídeo e por último um PDF, para três números de celulares.

```json
{
	"fallback": false,
	"callback": "https://localhost/rcs-callback",
	"messages": [
		{
			"image": {
				"url": "http://localhost/images/thechat_logo.png"
			}
		},
		{
			"video": {
				"url": "https://file-examples.com/wp-content/storage/2017/04/file_example_MP4_480_1_5MG.mp4"
			}
		},
		{
			"pdf": {
				"url": "https://file-examples.com/wp-content/storage/2017/10/file-sample_150kB.pdf"
			}
		}
	],
	"tokens": [
		"14981546797",
		"11632359235",
		"13981654572"
	]
}
```

Um outro exemplo com o envio de um Card com quatro botões e com fallback ativo.

```json
{
	"fallback": true,
    "fallback_message": "Você ainda não possui suporte ao RCS!",
	"callback": "https://localhost",
	"messages": [
		{
			"card": {
				"text": "Mensagem de Texto",
				"title": "Título do Card!",
				"url": "http://localhost/images/thechat_logo.png",
				"options": [
					{
						"type": "call",
						"title": "Liga pra mim!",
						"value": "14981546757"
					},
					{
						"type": "call",
						"title": "Acesse nosso insta",
						"value": "https://instagram.com/ricocrivelli"
					},
					{
						"type": "reply",
						"title": "Parar de receber mensagem",
						"value": "Sair"
					},
					{
						"type": "link",
						"title": "Acesse nosso site!",
						"value": "https://uol.com.br"
					},
					{
						"type": "call",
						"title": "Ignorado",
						"value": "Nao vai computador"
					}
				]
			}
		}
	],
	"tokens": [
		"14981546757",
		"14632359235",
		"14981654572"
	]
}
```

#### Retorno da requisição

A requisição irá retornar uma resposta no formato JSON indicando se houve erro e qual foi ou se o envio foi um sucesso, além do código do disparo.

[As mensagens de erro estão em um capítulo separado.](https://docs.dchat.com.br/books/rcs-api/page/respostas-de-erro "Respostas de erro")

```json
{
  "success": true,
  "batch": 1
}
```

##### Código do Disparo

O código do disparo (parâmetro `batch`) é um **número único e que será enviado sempre junto com as respostas de `callback`**, portanto é necessário sempre guardar essa informação, para que junto com o número de celular, torne os tokens únicos.