Les autorépondeurs SMS sont des outils puissants pour diffuser rapidement des informations.

Imaginez que vous louez des appartements. Vous pouvez envoyer automatiquement des listes d’appartements aux personnes intéressées. Vous pouvez également demander à de nouveaux clients de s’inscrire sur une liste de diffusion par le biais de SMS automatiques. Des conversations entières peuvent être entièrement automatisées – un client peut parler à un agent virtuel pour planifier le nettoyage, demander des fournitures supplémentaires et d’autres demandes courantes.

Lorsque vous intégrez un autorépondeur à votre application, vous pouvez interagir avec les utilisateurs finaux avec un minimum d’efforts. L’engagement et la satisfaction accrus des clients, ainsi que le gain de temps, sont autant d’avantages supplémentaires.

Dans ce tutoriel, vous apprendrez à créer un autorépondeur SMS pour un lieu d’événement en utilisant Python et ClickSend.

Qu’est-ce qu’un autorépondeur SMS ?

Un autorépondeur SMS est un numéro de téléphone mobile doté d’une règle d’automatisation qui prend des mesures lorsqu’il reçoit des messages contenant certains mots-clés.

Cependant, les autorépondeurs peuvent faire bien plus que fournir des informations.

Vous pouvez utiliser les autorépondeurs pour collecter des données sur les utilisateurs en vue de l’assistance à la clientèle et pour abonner les clients à des automatismes SMS et/ou à des listes de diffusion. Vous pouvez également créer un assistant virtuel pour le service clientèle.

Mise en place d’autorépondeurs SMS en Python

Dans cet exemple, le répondeur automatique répondra par SMS aux demandes d’informations concernant un lieu d’événement hypothétique. Les visiteurs pourront envoyer des messages contenant les mots “vendredi”, “samedi” ou “dimanche” et recevoir des informations sur l’événement prévu ce jour-là.

Par exemple, une demande telle que “Hé, qu’est-ce qui se passe dimanche ?” recevra un message comme celui-ci : “Concert d’une pop star locale. Interprète : Ariana Grandeur. Début à 21 heures. Entrée : 15 dollars”.

Remarque : ce tutoriel explique comment utiliser le SDK de ClickSend. ClickSend propose également une interface web intuitive avec des fonctionnalités similaires (si vous recherchez une solution sans code).

Conditions préalables

Voici ce dont vous aurez besoin pour suivre ce tutoriel :

Installer le SDK Python

Pour appeler notre API à partir de Python, vous devez installer le kit SDK officiel afin de pouvoir l’importer dans votre code. Vous trouverez notre SDK officiel pour Python sur notre dépôt Github.

Pour l’installer, exécutez la commande suivante :

pip install git+https://github.com/ClickSend/clicksend-python.git

Votre première règle d’automatisation

Pour créer l’autorépondeur, vous devez définir des règles d’automatisation. Dans ce tutoriel, nous soumettrons 3 règles à l’API ClickSend – une pour chaque jour où il y aura un événement.

Pour soumettre une règle d’automatisation à ClickSend, créez un nouveau fichier appelé autoresponder.py et ouvrez-le dans un éditeur.

Ensuite, importez tous les paquets nécessaires. Vous devrez utiliser clicksend_client, qui est le SDK de ClickSend, et ast, qui, entre autres choses, peut convertir une chaîne en dictionnaire :

import clicksend_client
from clicksend_client.rest import ApiException
import ast

Ajoutez les détails de votre autorisation :

configuration = clicksend_client.Configuration()
configuration.username = 'USERNAME'
configuration.password = 'API_KEY'

Remplacez USERNAME par votre nom d’utilisateur et API_KEY par votre clé API. Vous trouverez la clé API dans le tableau de bord ClickSend :

Capture d'écran du tableau de bord ClickSend montrant où trouver la clé API

Vous êtes prêt à créer votre première règle SMS. Commencez par initialiser une instance API :

api_instance = clicksend_client.InboundSMSRulesApi(
clicksend_client.ApiClient(configuration))

Créez un objet de règle :

Ce document contient les instructions pour un automatisme appelé Thursday. Comme le message_search_type est 2 et le message_search_term est Thursday, il répondra automatiquement aux messages qui contiennent le mot “Thursday”. Pour plus d’informations sur ces paramètres, vous pouvez consulter la documentation officielle.

 inbound_sms_rule = clicksend_client.InboundSMSRule(
    dedicated_number="*",
    rule_name="Thursday",
    message_search_type=2,
    message_search_term="Thursday",
    action="AUTO_REPLY",
    action_address="",
    enabled=1
)

Malheureusement, la fonction n’a pas de paramètre pour le corps de la réponse – le texte que le répondeur automatique doit renvoyer à l’utilisateur – et vous ne pouvez donc pas l’ajouter à l’objet par l’intermédiaire des méthodes du SDK.

Mais l’API contient un champ pour ce paramètre. Si vous envoyez un champ "body" dans le message JSON à l’API, celle-ci l’ajoutera à l’automatisation afin que vous puissiez ajouter le texte de la réponse manuellement.

Pour ce faire, convertissez l’objet que vous avez créé en dictionnaire et ajoutez manuellement la propriété body:

try:
    api_response = api_instance.sms_inbound_automation_post(rule)
    print(api_response)
except ApiException as e:
    print("Exception when calling InboundSMSRulesApi->sms_inbound_automation_post: %s\n" % e)

Soumettez cet automatisme à ClickSend :

try:
    api_response = api_instance.sms_inbound_automation_post(rule)
    print(api_response)
except ApiException as e:
    print("Exception when calling InboundSMSRulesApi->sms_inbound_automation_post: %s\n" % e)

Après avoir exécuté le script, vous devriez obtenir la réponse suivante :

{
    "http_code": 200,
    "response_code": "SUCCESS",
    "response_msg": "Your record has been added.",
    "data": {
        "inbound_rule_id": 799903,
        "dedicated_number": "*",
        "rule_name": "Thursday",
        "message_search_type": 2,
        "message_search_term": "Thursday",
        "action": "AUTO_REPLY",
        "action_address": "",
        "body": "Thursday, never looking back",
        "enabled": 1,
        "webhook_type": "post"
    }
}

Générer automatiquement des autorépondeurs

Ajouter manuellement des événements en modifiant les règles peut prendre du temps. Il est préférable de le faire automatiquement avec Python, de sorte que le script pour le site génère automatiquement les règles à partir des descriptions des événements. Dans la réalité, vous exécuteriez ce script au début de chaque semaine pour définir les automatismes SMS de la semaine.

Avant de suivre cette partie, supprimez tout ce qui se trouve dans votre fichier jusqu’à l’initialisation de l’instance de l’API.

Tout d’abord, vous devez créer une fonction qui simulera une réponse de l’API. Elle récupérera les descriptions des événements de la semaine sous la forme d’un dictionnaire. Dans la réalité, il s’agirait d’un appel API à votre système de gestion des événements. Utilisez le code suivant :

def get_events():
    return {
        "Friday": "A rowdy punk-rock concert. Band: The Mash. Starts at 10 p.m. Entry: free.",
        "Saturday": "Warm indie get-together. Band: Antarctic Monkeys. Starts at 8 p.m. Entry: $5",
        "Sunday": "Local pop star concert. Performer: Ariana Grandeur. Starts at 9 p.m. Entry: $15"
    }

Ensuite, créez une fonction d’aide qui génère une règle lorsqu’on lui donne un jour et une description :

def create_rule(day, description):
    inbound_sms_rule = clicksend_client.InboundSMSRule(
        dedicated_number="*",
        rule_name=day,
        message_search_type=2,
        message_search_term=day,
        action="AUTO_REPLY",
        action_address="",
        enabled=1
    )
    rule = inbound_sms_rule.to_dict()
    rule["body"] = description
    return rule

Parcourez en boucle le dictionnaire d’événements et téléchargez les règles vers ClickSend.

Si une règle existe déjà, vous devez la mettre à jour et ne pas en créer une nouvelle. Vous vous assurez ainsi de n’avoir qu’une seule règle pour chaque jour afin de ne pas envoyer plusieurs messages à l’utilisateur. Vous pouvez créer une fonction d’aide qui vérifie l’existence d’une règle et, si elle existe, la met à jour au lieu d’en publier une autre.

Le code d’une telle fonction se trouve ci-dessous :

def post_or_update_rule(new_rule):
    search_term = new_rule["message_search_term"]
    try:
        sresponse = api_instance.sms_inbound_automations_get()
        response = ast.literal_eval(sresponse)
        rules = response['data']['data']
        id = None
        for rule in rules:
            if rule["message_search_term"] == search_term:
                id = rule["inbound_rule_id"]
                break
        if id is None:
            api_response = api_instance.sms_inbound_automation_post(new_rule)
            print(api_response)
        else:
            api_response = api_instance.sms_inbound_automation_put(id, new_rule)
            print(api_response)
    except ApiException as e:
        print("Exception: %s\n" % e)

Ce code récupère toutes les règles de ClickSend et utilise ast.literal_eval() pour convertir la réponse (qui est une chaîne) en un dictionnaire Python valide. Si une règle a la même phrase de déclenchement que la règle que vous soumettez, il récupère l’ID et le met à jour. Vous supposez que la fonction n’a pas besoin d’être définie pour les cas où il y a plusieurs éléments avec la même phrase de déclenchement.

S’il n’y a pas de règles avec la phrase de déclenchement donnée, la règle sera publiée.

Il ne reste plus qu’à appeler ces fonctions :

events = get_events()
for day in events:
    rule = create_rule(day, events[day])
    post_or_update_rule(rule)
{
    "http_code": 200,
    "response_code": "SUCCESS",
    "response_msg": "Your record has been updated.",
    "data": {
        "inbound_rule_id": 799928,
        "dedicated_number": "*",
        "rule_name": "Friday",
        "message_search_type": 2,
        "message_search_term": "Friday",
        "action": "AUTO_REPLY",
        "action_address": "",
        "body": "A rowdy punk-rock concert. Band: The Mash. Starts at 10 p.m. Entry: free.",
        "enabled": 1,
        "webhook_type": "post"
    }
}
{
    "http_code": 200,
    "response_code": "SUCCESS",
    "response_msg": "Your record has been updated.",
    "data": {
        "inbound_rule_id": 799929,
        "dedicated_number": "*",
        "rule_name": "Saturday",
        "message_search_type": 2,
        "message_search_term": "Saturday",
        "action": "AUTO_REPLY",
        "action_address": "",
        "body": "Warm indie get-together. Band: Antarctic Monkeys. Starts at 8 p.m. Entry: $5",
        "enabled": 1,
        "webhook_type": "post"
    }
}
{
    "http_code": 200,
    "response_code": "SUCCESS",
    "response_msg": "Your record has been updated.",
    "data": {
        "inbound_rule_id": 799930,
        "dedicated_number": "*",
        "rule_name": "Sunday",
        "message_search_type": 2,
        "message_search_term": "Sunday",
        "action": "AUTO_REPLY",
        "action_address": "",
        "body": "Local pop star concert. Performer: Ariana Grandeur. Starts at 9 p.m. Entry: $15",
        "enabled": 1,
        "webhook_type": "post"
    }
}

Remarque : dans cet exemple, la recherche est effectuée à chaque appel pour des raisons de simplicité ; vous pouvez déplacer l’appel pour réduire le nombre de recherches.

Test des automatismes

Capture d'écran montrant la page Quick SMS dans le tableau de bord ClickSend

Vous pouvez consulter tous vos automatismes actifs dans Inbound SMS. Si vous souhaitez tester une automatisation spécifique, utilisez le tableau de bord ClickSend pour vous envoyer un SMS rapide:

Les messages devraient apparaître dans votre historique de messages:

Capture d'écran de l'historique des messages avec le message reçu et la réponse générée automatiquement

Comme vous le voyez, l’automatisation répond avec succès à toute demande utilisant les noms des jours de week-end en fournissant des informations sur l’événement prévu ce jour-là.

Essayez-le vous-même

Vous construisez des logiciels ou des composants en Python ? Vous pouvez non seulement ajouter des répondeurs automatiques, mais aussi appeler nos autres points de terminaison pour ajouter/modifier des listes de contacts, gérer votre compte ou envoyer des messages par MMS, voix, fax et plus encore. Consultez notre documentation sur l’API Python ici.