Tables de correspondance
Une table de correspondance (lookup table) est une petite liste dans laquelle votre agent peut chercher une valeur pendant un appel : le numéro composé par l'appelant donne la marque à annoncer dans l'accueil, un code postal donne l'atelier le plus proche et son téléphone, un code d'offre donne son libellé. L'agent trouve la ligne et récupère ses valeurs sous forme de variables ordinaires.
Quand l'utiliser
Utilisez une table de correspondance dès que la réponse est une correspondance exacte que l'on peut écrire dans un tableur : « telle valeur donne telle réponse ». Cas typiques :
- Plusieurs numéros, un seul agent. Chacun de vos numéros appartient à une marque, une boutique ou un service, et l'accueil doit annoncer le bon.
- Orientation par zone. Un code postal donne l'agence, l'atelier ou le conseiller vers qui transférer.
- Codes et références. Un code d'offre, un code produit ou un code de statut donne un libellé que l'agent peut prononcer.
Pourquoi pas le prompt ou une base de connaissances ? L'IA de l'agent ne peut pas remplir de variables, et l'accueil est prononcé avant que l'IA ne s'exécute : une consigne du type « si le numéro est X, annonce la marque Y » ne fonctionne donc pas. Une base de connaissances est interrogée avec ce que l'appelant dit, et ne sait pas distinguer deux numéros de téléphone. Une table de correspondance donne la même réponse exacte à chaque appel, avant que l'agent ne prononce un mot.
Étape 1 : créer la table
Les tables appartiennent à un compte et sont partagées par tous les agents de ce compte. Ouvrez Accounts, choisissez le compte, puis l'onglet Lookup tables, et cliquez sur New table.
- Table name : le nom sous lequel vous choisirez la table dans un agent, par exemple Shop numbers. Le Result name en dessous se remplit tout seul.
- How values are compared : choisissez l'une des trois façons décrites plus bas. Pour des numéros de téléphone, choisissez Phone number.
- Rows : la première colonne est la clé, c'est-à-dire la valeur que l'agent cherche. Chaque autre colonne est une réponse, et devient une variable du même nom. Saisissez les lignes, ou cliquez sur Import et choisissez un fichier CSV, ou copiez les cellules dans Excel ou Google Sheets et collez-les. La première ligne doit contenir les noms des colonnes.
- If nothing matches (dernière ligne, facultative) : les valeurs à utiliser quand la valeur n'est pas dans la table, par exemple le nom de la marque principale. Laissez-la vide pour obtenir des variables vides.
- Try a value : saisissez une valeur et cliquez sur Try pour voir quelle ligne elle trouve. C'est exactement la même recherche que pendant un vrai appel.
- Cliquez sur Save.
Les noms de colonnes deviennent des noms de variables : utilisez des minuscules, des chiffres et _, en commençant par une lettre (par exemple shop_name). Une table peut contenir jusqu'à 20 colonnes et 5 000 lignes, et un compte jusqu'à 50 tables. Export CSV télécharge la table : vous pouvez la modifier dans un tableur puis la réimporter.
Les modifications s'appliquent dès l'appel suivant. Une table ne fait pas partie des versions d'un agent : dès que vous l'enregistrez, chaque agent qui l'utilise lit les nouvelles lignes à partir de l'appel suivant, sans rien republier. La colonne Used by de la liste indique quels agents utilisent chaque table.
Comment les valeurs sont comparées
| Choix | Ce qui correspond | À utiliser pour |
|---|---|---|
| Phone number | 01 99 00 01 01, +33 1 99 00 01 01 et 33199000101 sont le même numéro : les espaces, les points et l'indicatif pays n'ont pas d'importance. | Numéros appelés, numéros des appelants. |
| Exact text | Le même texte, sans tenir compte des majuscules et des espaces en trop. | Codes, références, noms. |
| Starts with | Les lignes dont la clé est le début de la valeur : 75 correspond à 75011 et à 75019. Si plusieurs lignes correspondent, la clé la plus longue l'emporte. | Codes postaux, plages de numéros. |
Étape 2a : chercher une valeur avant l'accueil
Pour utiliser la réponse dans l'accueil, faites la recherche au début de l'appel. Dans l'éditeur d'agent, ouvrez l'onglet Initialization, allez dans Startup Actions et cliquez sur Add Initializer :
- Donnez un nom à l'action (cliquez sur le cadenas), par exemple Boutique du numéro appelé.
- Choisissez le type Lookup table.
- Table : choisissez votre table.
- Value to look up : cliquez sur
{{to_number}}(le numéro composé par l'appelant) ou{{from_number}}(le numéro de l'appelant), ou saisissez n'importe quelle variable déjà connue à ce moment. - Lisez l'encadré This lookup creates : ce sont les variables que vous pouvez maintenant utiliser.
L'accueil peut alors dire, par exemple : « Bonjour, vous êtes bien chez {{shop_name}}. Nous sommes ouverts de {{opening_hours}}. » La recherche n'envoie aucune requête, elle n'ajoute donc aucune attente à l'appel.
Numéros renvoyés vers un seul numéro Manivox. Si vos numéros sont renvoyés vers un seul numéro Manivox, {{to_number}} vaut ce numéro Manivox à chaque appel. Le numéro réellement composé par l'appelant arrive dans l'en-tête SIP Diversion. Ajoutez une action de démarrage SIP Header qui place Diversion dans une variable (par exemple dialed_number), placez la recherche après elle, et cherchez {{dialed_number}}. Voir En-têtes SIP → Diversion.
Étape 2b : chercher une valeur pendant l'appel
Quand la valeur n'est connue que plus tard (un code postal donné par l'appelant, une référence lue dans une API), utilisez une étape Variable dans le flow, avec l'opération Look up in a table. L'étape Variable fait partie des nœuds de Flow optionnels : si elle n'apparaît pas dans votre palette, demandez à votre contact Manivox de l'activer.
- Glissez une étape Variable sur le canevas et ouvrez-la.
- Operation : Look up in a table.
- Table : choisissez votre table, par exemple Repair workshops.
- Value to look up : tapez
{{et choisissez la variable, par exemple@{{postcode}}collectée par une étape Agent précédente. - Cliquez sur OK, puis reliez l'étape dans le flow.
Un flow typique : une étape Agent recueille le code postal, l'étape Variable cherche l'atelier, une étape Branch vérifie s'il a été trouvé, et une étape Transfer appelle {{workshop_phone}}.
Ce que vous obtenez
Pour une table dont le nom de résultat est workshops et dont les colonnes sont postcode, workshop et workshop_phone, une recherche crée :
| Variable | Contenu |
|---|---|
{{workshop}}, {{workshop_phone}}, ... | Une variable par colonne, issue de la ligne trouvée. Si rien ne correspond, les valeurs de la ligne If nothing matches, ou vide. |
{{workshops}} | Toutes les lignes trouvées, une ligne chacune dans un prompt (utile avec Starts with, où plusieurs lignes peuvent correspondre). |
{{workshops_count}} | Le nombre de lignes trouvées. 0 signifie « introuvable », même si la ligne par défaut a été utilisée. |
Utilisez-les comme n'importe quelle variable : dans les prompts, les messages, les règles de sortie, les étapes Branch et Condition, les transferts et les appels d'API. Pour gérer le cas « introuvable », routez sur le nombre, par exemple avec une règle de sortie {{workshops_count}} égal à 0. Le champ Result name de l'action ou de l'étape renomme la liste et son nombre si vous utilisez deux fois la même table.
Si la recherche ne trouve rien
- Collez la valeur dans Try a value sur la table : la réponse est la même que pendant un appel.
- Vérifiez la comparaison : un numéro de téléphone dans une table réglée sur Exact text ne correspondra pas à
33199000101. Passez la table en Phone number. - Ouvrez l'appel dans Appels et regardez les variables reçues : la variable cherchée (par exemple
{{to_number}}) montre la valeur utilisée. Si ce n'est pas celle attendue (un numéro renvoyé, par exemple), corrigez la valeur, pas la table.