# RCS

{% hint style="info" %}
Pour activer cette fonctionnalité merci de [contacter l'équipe technique](https://www.smspartner.fr/contact/)
{% endhint %}

## URL

<mark style="color:green;">`POST`</mark> `https://api.smspartner.fr/v1/rcs/send`

{% hint style="warning" %}
La plateforme n’envoie pas de SMS commerciaux entre **20h et 8h en semaine et les dimanches et jours fériés** (restriction légale). Si un message SMS est envoyé, le message est **en pause jusqu’au prochain jour ouvrable à 8h**.\
Vous n’envoyez pas de SMS commerciaux ? Contactez nous pour désactiver cette restriction : <help@smspartner.fr>
{% endhint %}

#### **Paramètres obligatoires**

<table data-full-width="false"><thead><tr><th width="180">Nom</th><th>Valeur</th></tr></thead><tbody><tr><td><code>apiKey</code></td><td><a href="https://my.smspartner.fr/dashboard/api">Votre clé API</a></td></tr><tr><td><code>phoneNumbers</code></td><td><p>Numéros de téléphone des destinataires.<br>Pour l’envoi de plusieurs SMS les numéros doivent être séparés par des virgules. <strong>La limite d’envoi sur une seule requête est de 500 numéros.</strong><br>Ils peuvent être :</p><ul><li>au format national (06xxxxxxxx) ou international (+336xxxxxxxx), pour des numéros français.</li><li>au format international (+496xxxxxxxx), pour des numéros hors France.</li></ul></td></tr><tr><td><code>isUnicode</code></td><td>1</td></tr><tr><td><code>richContent</code></td><td><a href="#contenu-enrich">Voir ci-dessous</a></td></tr></tbody></table>

#### **Paramètres optionnels**

<table data-full-width="false"><thead><tr><th width="227">Nom</th><th>Valeur</th></tr></thead><tbody><tr><td><code>scheduledDeliveryDate</code></td><td>Date d’envoi du SMS, au format <code>dd/mm/YYYY</code>. A définir uniquement si vous souhaitez que les SMS soient envoyés en différé.</td></tr><tr><td><code>time</code></td><td>Heure d’envoi du SMS (format 0-24), obligatoire si <code>scheduledDeliveryDate</code> est défini.</td></tr><tr><td><code>minute</code></td><td>Minute d’envoi du SMS (format 0-55, par intervalle de cinq minutes), obligatoire si <code>scheduledDeliveryDate</code> est défini.</td></tr></tbody></table>

#### Contenu enrichi

{% tabs fullWidth="true" %}
{% tab title="Envoyer un texte" %}

```json
{
    "apiKey": "",
    "isUnicode": 1,
    "phoneNumbers": [
        "+33....."
    ],
    "richContent": {
        "conversation": {
            "text": ""
            "suggestions": [
                //Voir la section suggestions (4 maximum)
            ]
        }
    },
    
    //optionnel: Permet d'envoyer un SMS si le RCS n'est pas accepté sur l'appareil du destinataire
    "failover":{
        "sender":"cyril",
        "message": "ceci est un sms de basculement",
        "isStopSms":1,
        "isUnicode":1
    }
}
```

{% endtab %}

{% tab title="Envoyer un fichier" %}

```json
{
   "apiKey": "",
   "phoneNumbers": [
       ""
   ],
   "isUnicode": 1,
   "richContent": {
       "conversation": {
           "file": {
                "media": {
                   "fileUrl": ""
               }
           },
           "suggestions": [
               //Voir la section suggestions (4 maximum)
           ]
       }
   },
   //optionnel: Permet d'envoyer un SMS si le RCS n'est pas accepté sur l'appareil du destinataire
   "failover":{
       "sender":"cyril",
       "message": "ceci est un sms de basculement",
       "isStopSms":1,
       "isUnicode":1
   }
}
```

{% endtab %}

{% tab title="Envoyer une carte enrichie" %}

```json
{
   "apiKey": "",
   "phoneNumbers": [
       ""
   ],
   "isUnicode":1,
   "richContent": {
       "conversation": {
           "richCard": {
               "orientation": "VERTICAL", //VERTICAL ou HORIZONTAL
               "thumbnailImageAlignment":"LEFT", //Seulement si orientation == HORIZONTAL, LEFT ou RIGHT
               "title": "", //200 caractères maximum
               "description": "", //500 caractères maximum
               "media": {
                   "height": "MEDIUM", //uniquement si orientation == VERTICAL
                   "mediaUrl": ""
               },
               "suggestions": [
                   //Voir la section suggestions (4 maximum)
               ]
           },
           
           //suggestions globals (8 maxi)
           "suggestions":[
                //Voir la section suggestions  (8 maximum)   
            ]
       }
   },

   //optionnel: Permet d'envoyer un SMS si le RCS n'est pas accepté sur l'appareil du destinataire
   "failover":{
       "sender":"cyril",
       "message": "Ceci est un sms de basculement",
       "isStopSms":1,
       "isUnicode":1
   }
  "apiKey": "",
```

{% endtab %}

{% tab title="Envoyer un carrousel" %}

```json
{
   "apiKey": "",
   "phoneNumbers": [
       ""
   ],
   "isUnicode": 1,
   "richContent": {
       "conversation": {
           "carousel": {
               "cardWidth": "MEDIUM", //OR SMALL

               // 8 cards maximum
               "cards": [
                   {
                       "title": "", //200 caractères maximum
                       "description": "", //500 caractères maximum
                       "media": {
                           "height": "MEDIUM",
                           "mediaUrl": ""
                       },
                       "suggestions": [
                            //Voir la section suggestions  (4 maximum)
                       ]
                   },
                   {
                       "title": "", //200 caractères maximum
                       "description": "", //500 caractères maximum
                       "media": {
                           "height": "MEDIUM",
                           "mediaUrl": ""
                       },
                       "suggestions": [
                           //Voir la section suggestions  (4 maximum)
                       ]
                   },
                   {
                       "title": "", //200 caractères maximum
                       "description": "", //500 caractères maximum
                       "media": {
                           "height": "MEDIUM",
                           "mediaUrl": ""
                       },
                       "suggestions": [
                           //Voir la section suggestions  (4 maximum)
                       ]
                   }
               ]
           },

           //suggestions globals (8 maxi)
           "suggestions": [
               //Voir la section suggestions  (8 maximum)
           ]
       }
   },

   //optionnel: Permet d'envoyer un SMS si le RCS n'est pas accepté sur l'appareil du destinataire
   "failover":{
       "sender":"cyril",
       "message": "ceci est un sms de basculement",
       "isStopSms":1,
       "isUnicode":1
   }
}
```

{% endtab %}
{% endtabs %}

#### Suggestions

{% tabs fullWidth="true" %}
{% tab title="Réponse" %}

```json
{
    "reply": {
        "text": "Réponse 2",
        "postbackData": "postback_data_1234" //Valeur qui sera envoyée en réponse à une suggestion.
    }
}
```

{% endtab %}

{% tab title="Action :  Ouvrir une URL" %}

```json
{
    "action": {
           "text": "Open SMSPartner",
           "postbackData": "postback_data_1", //Valeur qui sera envoyée en réponse à une suggestion.
           "openUrlAction": {
               "url": "https://www.smspartner.fr" //URL qui s'ouvrira sur le téléphone portable lorsque la suggestion est sélectionnée. Il doit s'agir d'un URI valide tel que défini dans la RFC 3986. Tous les formats d'URI ne sont pas pris en charge par tous les réseaux.
            }
    }
}
```

{% endtab %}

{% tab title="Action :  Appeler" %}

```json
{
    "action": {
       "text": "Appeler SMSPartner",
       "postbackData": "postback_data_2", //Valeur qui sera envoyée en réponse à une suggestion.
       "dialAction": {
           "phoneNumber": "+33......." //Numéro de téléphone valide
           }
       }
}
```

{% endtab %}

{% tab title="Action : Localisation" %}

```json
{
    "action": {
        "text": "Emplacement",
        "postbackData": "postback_data_3", //Valeur qui sera envoyée en réponse à une suggestion.
        "viewLocationAction": {
           "label": "Ici !!!", //Label de l'emplacement.
           "latLong": {
                 "latitude": 2.4220188, //Latitude du lien
                 "longitude": -122.0844786 //Longitude du lieu
            }
      }
  }
}
```

{% endtab %}

{% tab title="Action : Calendrier" %}

```json
{
    "action": {
        "text": "Notre rendez-vous",
        "postbackData": "postback_data_4", //Valeur qui sera envoyée en réponse à une suggestion.
             "createCalendarEventAction": {
                 "startTime": "2020-06-30 19:00:00", //Date et heure de début de l'événement. Elle doit se situer dans le futur et avant endTime. Le format requis est yyyy-MM-dd'T'HH:mm:ss.SSSZ (par exemple, 2030-03-03T15:00:00.000+01:00). L'heure de début affichée peut être affectée par le fuseau horaire par défaut de l'appareil.
                 "endTime": "2020-06-30 19:30:00", //Date et heure de fin de l'événement.Elle doit se situer dans le futur et après startTime. Le format requis est yyyy-MM-dd'T'HH:mm:ss.SSSZ (par exemple, 2030-03-03T17:00:00.000+01:00). L'heure de fin affichée peut être affectée par le fuseau horaire par défaut de l'appareil.
                 "title": "Rendez-vous",  //Titre de l'événement.
                 "description": "Description de la réunion" //Description de l'événement.
              }
        }
}
```

{% endtab %}
{% endtabs %}

#### **Réponse**

{% tabs %}
{% tab title="json" %}

```json
{
   "success":true,
   "code":200,
   "message_id":1,
   "nb_rcs": 1,
   "cost": 0.12,
   "currency": "EUR"
}
```

{% endtab %}
{% endtabs %}

#### **Types de fichiers multimédias acceptés**

RBM est compatible avec les types de médias suivants:

| Type de contenu | Type de document     | Extension   | Compatible avec les cartes enrichies |
| --------------- | -------------------- | ----------- | ------------------------------------ |
| application/ogg | Audio OGG            | .ogx        | Non                                  |
| application/pdf | PDF                  | .pdf        | Non                                  |
| audio/aac       | Audio AAC            | .aac        | Non                                  |
| audio/mp3       | Format audio MP3     | .mp3        | Non                                  |
| audio/mpeg      | Audio MPEG           | .mpeg       | Non                                  |
| audio/mpg       | Audio MPG            | .mp3        | Non                                  |
| audio/mp4       | Audio MP4            | .mp4        | Non                                  |
| audio/mp4-latm  | Audio MP4-latm       | .mp4        | Non                                  |
| audio/3gpp      | Audio 3GPP           | .3gp        | Non                                  |
| image/jpeg      | JPEG                 | .jpeg, .jpg | Oui                                  |
| image/gif       | GIF                  | .gif        | Oui                                  |
| image/png       | PNG                  | .png        | Oui                                  |
| video/h263      | Vidéo H263           | .h263       | Oui                                  |
| video/m4v       | Vidéo M4V            | .m4v        | Oui                                  |
| video/mp4       | Vidéo MP4            | .mp4        | Oui                                  |
| video/mpeg4     | Vidéo MPEG-4         | .mp4, .m4p  | Oui                                  |
| video/mpeg      | Vidéo MPEG           | .mpeg       | Oui                                  |
| vidéo/webm      | Vidéo au format WebM | .webm       | Oui                                  |


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://www.docpartner.dev/api/sms-partner/rcs.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
