# Tableau de bord
C'est la premiÚre page sur laquelle vous arrivez quand vous accédez à votre application.
Vous y retrouverez l'ensemble des statistiques de votre chatbot. Voici en dĂ©tails les Ă©lĂ©ments que vous retrouvez đđ
# Stats d'usage
# Nouveaux utilisateurs
C'est le nombre de nouvelles personnes qui ont entamé la conversation avec le chatbot au cours de la période de temps sélectionnée.
# Utilisateurs actifs
C'est le nombre total de personnes différentes qui ont parlé au chatbot dans la période de temps sélectionnée. Il est toujours au moins égal au nombre de nouveaux utilisateurs.
# Nombre de messages
C'est le nombre de messages que le bot a reçus dans la période de temps sélectionnée.
Par exemple sur l'image ci-dessous nous avons:
- 307 nouveaux utilisateurs du 16/06/2021 au 22/06/2021
- 314 utilisateurs actifs sur la mĂȘme pĂ©riode
- 1033 messages reçus par le chatbot
# Contenus
Vous souhaitez savoir quelles ressources sont le plus consultées par vos utilisateurs ?
Nous avons rajouté un onglet contenus dans le dashboard qui vous permet de voir la liste des 15 sujets les plus consultés par les utilisateurs.
Nous allons amĂ©liorer progressivement cet onglet donc n'hĂ©sitez pas Ă revenir vers nous avec les donnĂ©es que vous souhaiteriez voir dans cet onglet đ€
# Stats de NLU
Les statistiques de compréhension sont utiles pour analyser l'efficacité de votre paramétrage NLU.
Cette rubrique contient les statistiques suivantes :
- Nombre de requĂȘtes traitĂ©es
- Nombre de requĂȘtes comprises
- Nombre de requĂȘtes non comprises
- Nombre de requĂȘtes notĂ©es positivement
- Nombre de requĂȘtes notĂ©es nĂ©gativement
- Un tableau classant les couples intention/entitĂ©s par nombre de requĂȘtes comprises dĂ©croissant
En haut à gauche de votre écran vous pouvez sélectionner une période de temps. Toutes les statistiques mises à disposition seront calculées sur cette période.
Je vais maintenant décrire chacune de ces statistiques :
# Nombre de requĂȘtes traitĂ©es
Il s'agit du nombre de messages tapés par l'ensemble des utilisateurs du chatbot en langage naturel (en écrivant dans la bar de chat).
# Nombre de requĂȘtes comprises (Ă revoir)
Il s'agit du nombre de messages tapĂ©s par l'ensemble des utilisateurs du chatbot en langage naturel qui ont Ă©tĂ© redirigĂ©s vers la bonne ressource (oĂč le chatbot a rĂ©pondu le message escomptĂ©, correspondant Ă la requĂȘte de l'utilisateur).
# Nombre de requĂȘtes non comprises (Ă revoir)
Il s'agit du nombre de messages tapés par l'ensemble des utilisateurs du chatbot en langage naturel qui n'ont pas été comprises...
# Nombre de requĂȘtes notĂ©es positivement
Il s'agit du nombre de fois oĂč le pouce vert a Ă©tĂ© utilisĂ© pour noter positivement un message du chatbot.
# Nombre de requĂȘtes notĂ©es nĂ©gativement
Il s'agit du nombre de fois oĂč le pouce rouge a Ă©tĂ© utilisĂ© pour noter nĂ©gativement un message du chatbot.
# Liste des requĂȘtes mal comprise par le chatbot
Ce tableau liste toutes les requĂȘtes utilisateurs qui ont Ă©tĂ© mal perçues par le chatbot.
# Couples intention/identité les plus utilisés
Vous retrouverez ici les combinaisons intention + entités les plus trouvées par l'algorithme.
En face de chaque combinaison, nous affichons les éventuelles notes positives et négatives données par vos utilisateurs. Cela vous permet d'identifier des éventuelles combinaisons défaillantes.
# Stats personnalisées
Les statistiques personnalisées vont vous permettre de suivre let KPI de votre chatbot en créant des graphiques personnalisés. Ces statistiques sont basées sur les valeurs stockées dans les attributs de la mémoire du chatbot.
Vous avez le choix entre trois types de graphique :
- Valeur simple : affiche le nombre de réponses enregistrées sous un attribut (ex: nombre de personnes ayant répondu à la premiÚre question)
- Répartition : affiche la répartition des réponses à un attribut donnée (ex: sur quel bouton ont le plus cliqué mes utilisateurs à l'introduction)
- Graphique : affiche le nombre de réponses enregistrées sous un attribut dans le temps (ex: évolution du nombre de personnes ayant répondu à la premiÚre question)
# Ajouter une nouvelle statistique
Commencez par vous rendre dans le Menu "Tableau de bord" de votre chatbot. Puis sélectionnez l'onglet "Statistiques personnalisées". Vous avez désormais la possibilité de créer des statistiques en cliquant sur le bouton "Créer un graphe" en haut à droite de votre écran.
La premiÚre étape est de choisir un nom et une description pour votre graphe.
Ensuite, vous pouvez choisir trois types de graphes :
- Valeur simple : affichage d'une simple valeur calculée
- Répartition : affichage de proportions numériques
- Graphique : affichage de graphes
# Valeur simple
Vous devez choisir l'attribut sur lequel le calcul de la valeur finale sera basé.
Dans mon cas, je cherche à savoir combien de personnes ont cliqué ou écrit Wifi à la ressource Menu FAQ.
Optionnel : Il est possible d'afficher cette valeur en fonction d'un autre attribut. Dans mon cas, j'affiche ma valeur uniquement pour les utilisateurs ayant préalablement cliqué ou écrit FAQ dans la ressource intro.
Vous pouvez désormais admirer votre nouvelle statistique de type Valeur simple !
# Répartition (camembert)
Vous devez dans un premier temps choisir sur quel critÚre vous allez regrouper les utilisateurs. Dans mon cas, je souhaite différencier les utilisateurs selon leurs réponses à la ressource Menu FAQ.
Puis, vous pouvez choisir d'ajouter un critÚre pour filtrer la donnée. Dans mon cas, je souhaite comprendre la répartition des réponses utilisateurs à la ressource Menu FAQ seulement pour les utilisateurs qui ont répondu "FAQ" à la ressource intro.
A présent vous pouvez profiter de votre graphe de répartition !
PS : Pour comprendre Ă quoi correspond chaque part du camembert, il suffit de passer le curseur de votre souris dessus đ
Attention, le graphique montre les requĂȘtes en langage naturel ET les clics de boutons. Il peut donc y avoir beaucoup de parts au camembert. Nous travaillons actuellement sur cette problĂ©matique.
# Graphique
Cette fonctionnalitĂ© n'est pas encore disponible, bientĂŽt dans les bacs đ
Contactez-nous via le chat en bas Ă droite si vous en avez besoin rapidement.
Comment sont comptabilisées les réponses ?
Nous comptons une rĂ©ponse par process. C'est Ă dire que si un utilisateur a rĂ©pondu 3 fois Ă la mĂȘme compĂ©tence action (crĂ©ation de ticket par exemple). Nous allons comptabiliser 3 rĂ©ponses Ă l'attribut qui correspond. (voir l'exemple d'un processus ci-dessous pour plus d'explication)
Si l'utilisateur modifie une de ses réponse, nous comptabilisons que la derniÚre réponse donnée.
On peut utiliser les selecteurs de date du haut de l'écran pour choisir la période de temps qui nous correspond.
DANGER
Nous ressortons ici toutes les réponses pour un attribut qui ont été donné dans la période de temps sélectionnée.
# Exemple d'un processus
Exemple: Je réponds compétence action qui comprend 2 attributs: nom, prénom.
TIP
Dans ce cas, nous aurons 2 répondants à l'attribut "nom" et 2 répondants à l'attribut "prénom".
Par contre nous aurons 1 seul utilisateur.
# Stats de notation
Avant de mettre en place des statistiques de notation, vous devez activer l'option de notation du chatbot. đ Retrouvez la documentation ici
Une fois le module activé (et qu'au moins une note a été collectée) alors les données s'affiche tout simplement ici.
Vous retrouverez le nombre de note reçues :
Ainsi que les commentaires des utilisateurs :
Nous travaillons actuellement à la lisibilité de ce tableau qui est pour l'instant au format JSON.
Pour toute question concernant cet article, n'hésitez pas à utiliser le chat en bas à droite de votre écran.
# Visualiser et exporter les statistiques d'usage du bot
Sur la page d'accueil (section Tableau de bord), rendez-vous sur l'onglet "Export". Le champ "Vision" vous permet de choisir la présentation des données d'usage :
- Vision Uilisateurs : Une ligne par répondant. C'est une vue synthétique.
- Vision Réponses : Une ligne par réponse. Un répondant appraitra autant de fois qu'il a répondu ou interaggi avec le bot. RéflÚte l'exhaustivité des données.
Quelle que soit la "Vision" choisie, vous pouvez aussi renseigner les champs suivants :
Filtres sur les attributs : en saisissant vos filtres sous la forme filtre_un:valeur_un,filtre_deux:valeur_deux,...
.
Sélection des champs : Définit les "colonnes" du résultas retourné. Vous permet de ne sélectionner que les champs/attributs des répondants/ qui vous intéressent. Pour récupérer tous les champs/attributs, désélectionner tout.
âčïž A part les champs prĂ©fixĂ©s par "[Global]" qui sont des donnĂ©es "racines" Ă chaque ligne de stats, toutes les autres valeurs proposĂ©es sont simplement les attributs de votre bot.
âčïž Pour sĂ©lectionner/dĂ©selectionner tous les attributs d'une compĂ©tence, cliquez sur le nom de la compĂ©tence (sur fond gris) dans la liste de choix.
Le sĂ©lecteur "Stats Server" indique que les donnĂ©es sont rĂ©cupĂ©rĂ©es depuis notre serveur dĂ©diĂ© aux statistiques (â ïž Ă laisser tel quel, sauf si les donnĂ©es Ă rĂ©cupĂ©rer sont antĂ©rieureurs au 16 mars 2022, dans ce cas dĂ©selectionner cette option, mais sachez que vous ne pourrez rĂ©cupĂ©rer que des donnĂ©es antĂ©rieures Ă dĂ©but juin 2022)
# Spécificités de la "Vision Réponses"
Lorsque "Vision Réponses" est sélectionnée, deux nouveaux paramÚtres sont disponibles :
- Sélection types de déclencheurs : vous permet d'affiner votre export en fonction du type d'interaction.
Les interactions les plus courantes sont de types "answers" (saisie textuelle ou clic sur une suggestion de réponses).
Voici la liste de toutes les interactions disponibles (en fonction des plateformes de chat) :
- widget_open_click : Le widget a Ă©tĂ© ouvert via un clic de l'utilisateur (web ; â ïž aprĂšs que la conversation ait Ă©tĂ© initialisĂ©e)
- quick_reply_url_click : Clic sur un bouton de type URL (web)
- carousel_item_url_click : Clic sur le lien associé à un item de carousel (web)
- carousel_button_click : Clic sur un bouton de carousel (web, Facebook/Workplace, Teams)
- carousel_button_url_click : Clic sur un bouton de carousel de type URL (web)
- carousel_button_download_click : Clic sur un bouton de carousel de type "Download" (web)
- burger_entry_url_click : Clic sur un item du Burger Menu de type URL (web)
- burger_entry_postback_click : Clic sur un item du Burger Meny de type "postback" (web)
- result_list_item_select : Clic sur un item d'une liste de résultats (Teams)
- restart_button_click : Clic sur le bouton "Redémarrer" (web)
- process_start : Démarrage d'une compétence Action (tous)
- process_end : Fin d'une compétence Action (tous)
- create_issue_button_click: Clic sur le bouton de création de ticket
- issue_resolved_button_click: Clic sur le bouton "ProblÚme résolu"
- widget_redirection: RequĂȘte envoyĂ©e automatiquement suite Ă une redirection depuis un autre site (via l'utilisation du paramĂštre d'url "chatbot")
âčïž Ces deux derniers "dĂ©clencheurs" sont prĂ©sĂ©lectionnĂ©s par dĂ©faut, mais sachez qu'ils mĂšnent Ă une duplication du nombre de "RĂ©ponses". En effet, lorsqu'un rĂ©pondant dĂ©marre une compĂ©tence Action, sont créés une rĂ©ponse avec pour dĂ©clencheur "process_start" et valeur "Nom_compĂ©tence" et une autre avec pour dĂ©clencheur "process_end" et valeur "true". Elles ne correspondent Ă aucune interaction rĂ©elle du rĂ©pondant, mais peuvent s'avĂ©rer utile pour compter le nombre d'Actions dĂ©marĂ©es et/ou terminĂ©es.
- Filtrage sur la resource/attribut et/ou sur une valeur de réponse donnée par les répondants. Permet de récupérer seulement les Réponses à une certaine Ressource (désignée par le nom d'un de ses attributs correspondants) et/ou avec une certaine valeur donnée.
# Exporter via Google Sheets
DANGER
Les données des exports sont stockées avec la date de la réponse du répondant, donc vous pourrez avoir des différentiels entre les données d'un répondant (dans l'onglet conversation) et vos exports.
DANGER
Nous stockons tout le temps le payload de la réponse (boutons, carousel, Burger Menu).
TIP
Nous avons mis à jour le fichier d'export des statistiques en Avril 2021. Si vous utilisez l'ancienne version (disponible jusqu'en décembre 2021), veuillez vous reporter à cette page ancienne doc
Vous pouvez exporter les données directement dans Spreadsheet pour ensuite faire votre propre analyse.
Voici le fichier de base: ouvrir (opens new window)
Il a 2 onglets:
- convStatistics: exporter les données de conversation
- attributeStatistics: exporter les données des attributs et des compétences
Voici comment faire:
- Dupliquez la feuille de calcul dont vous avez besoin pour l'insérer dans le fichier de votre choix.
- Ouvrez l'éditeur de script >Outils>Editeur de scripts
- Coller le script ci-dessous
- Remplacer la ligne 2 avec votre token que vous récupérez dans le dashboard Vizir (mon compte > token)
- Lancer initScript pour valider les droit Vizir sur ce fichier.
- Compléter le tableau de chaque onglet (que vous pouvez renommer)
ChatbotId: A récupérer directement dans l'url de votre dashboard comme ci dessous
Environnement ID: A récupérer dans les paramÚtres d'Environnement de votre chatbot
apikey et apisecret: A récupérer dans votre compte
URL data: A récupérer sur le dashboard dans Exporter les données, copiez le lien et collez le dans la cellule
TIP
Si vous souhaitez utiliser un couple (apikey, apisecret) différent aprÚs l'initialisation c'est possible. Veuillez à remplir la case token avec comme ceci: apikey:apisecret
# Script Google Sheet
/* Variables to modify */
var token = undefined;
var apikey = 'LKwu8L6f****'
var apisecret = 'Htfam2Y30SEa408Jb********';
var dataSheets = {
conversationStatistics: ['convStatistics'],
attributeData: [],
resourceStatistics: ['resourcesStatistics']
}
/* Fixed variables */
var dataTypes = ['attributeData', 'conversationStatistics', 'resourceStatistics']
var baseUrl = 'https://developers.vizir.co'
var functionCell = 'D5';
var cells = {
conversationStatistics: {
chatbotIdCell: 'D6',
envIdCell: 'D7',
tokenCell: 'D8',
weekNumberCell: 'D9',
overwriteCell: 'D10',
addHeaders: 'D11',
firstRowData: 13
},
attributeData: {
chatbotIdCell: 'D6',
envIdCell: 'D6',
tokenCell: 'D6',
startingDate: 'D7',
endingDate: 'D8',
urlApiCell: 'D9',
overwriteCell: 'D10',
addHeaders: 'D11',
firstRowData: 13
},
resourceStatistics: {
chatbotIdCell: 'D6',
envIdCell: 'D7',
tokenCell: 'D7',
weekNumberCell: 'D8',
overwriteCell: 'D9',
addHeaders: 'D10',
firstRowData: 14
}
}
/**********************************************************
AUTOMATION
/**********************************************************/
function automateGetStatistics () {
// Goal: Write the week number and new date boundaries in order to launch the script
let today = new Date();
let endOfWeek = new Date(new Date().setDate(new Date().getDate() + 7))
let weekNumber = getWeekNumber(today)
for (let d = 0; d< dataTypes.length; d++) {
let type = dataTypes[d]
for (let i=0; i< dataSheets[type].length; i++) {
if (type === 'attributeData') {
writeValuesSheetName(today, cells[type].startingDate, dataSheets[type][i])
writeValuesSheetName(endOfWeek, cells[type].endingDate, dataSheets[type][i]);
} else if (type === 'conversationStatistics') {
writeValuesSheetName(weekNumber[1], cells[type].weekNumberCell, dataSheets[type][i])
}
getFunctionsValues(true, dataSheets[type][i]);
}
}
}
function getWeekNumber(d) {
// Copy date so don't modify original
d = new Date(Date.UTC(d.getFullYear(), d.getMonth(), d.getDate()));
// Set to nearest Thursday: current date + 4 - current day number
// Make Sunday's day number 7
d.setUTCDate(d.getUTCDate() + 4 - (d.getUTCDay()||7));
// Get first day of year
var yearStart = new Date(Date.UTC(d.getUTCFullYear(),0,1));
// Calculate full weeks to nearest Thursday
var weekNo = Math.ceil(( ( (d - yearStart) / 86400000) + 1)/7);
// Return array of year and week number
return [d.getUTCFullYear(), weekNo];
}
/**********************************************************
SCRIPT
/**********************************************************/
function getFunctionsValues(forceAddValues = false, sheetName = undefined) {
if (!sheetName) {
// Case click on button
sheetName = SpreadsheetApp.getActiveSheet().getName();
}
var func = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName).getRange(functionCell).getValue();
var chatbotId = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName).getRange(cells[func].chatbotIdCell).getValue();
var envId = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName).getRange(cells[func].envIdCell).getValue();
var token = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName).getRange(cells[func].tokenCell).getValue();
var overwriteValues = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName).getRange(cells[func].overwriteCell).getValue();
var addHeaders = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName).getRange(cells[func].addHeaders).getValue();
Logger.log(chatbotId)
if (forceAddValues) {
// Add line based on cron job
overwriteValues = false;
addHeaders = false;
}
var values;
var headers;
if (func == 'conversationStatistics') {
[headers, values] = getConversationStatistics_(sheetName, chatbotId, envId, token)
} else if (func == 'attributeData') {
[headers, values] = getAttributeStatistics_(sheetName, token)
} else if (func === 'resourceStatistics') {
[headers, values] = getResourceStatistics_(sheetName, chatbotId, envId)
}
if (!values || values.length == 0) {
// Set empty values
values = [['']]
}
if (overwriteValues) {
resetValues(sheetName, cells[func].firstRowData);
}
firstRowData = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName).getLastRow();
if (addHeaders && headers && headers.length>0) {
writeValues(headers, firstRowData, sheetName);
}
firstRowData = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName).getLastRow();
writeValues(values, firstRowData, sheetName);
}
/*
G sheet functions
get and reset Values
*/
function resetValues(sheetName, firstRowData) {
SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName).getRange(firstRowData + 1, 1,SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName).getLastRow(), SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName).getLastColumn()).clearContent();
}
function writeValuesResources (values, startingLine, sheetName) {
var range = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName).getRange(startingLine+1,1,values.length,values[0].length);
range.setValues(values);
return;
}
function writeValues (values, startingLine, sheetName) {
var range = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName).getRange(startingLine+1,1,values.length,values[0].length);
range.setValues(values);
return;
}
function writeValuesSheetName (value, cell, sheetName) {
var range = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName).getRange(cell);
range.setValue(value);
return;
}
/*
Internal Functions
*/
function ImportJSONAdvanced_(url, fetchOptions, query) {
if (query) {
for (let key in query) {
if (url.indexOf('?') === -1) {
url= url + '?'+key+'=' + query[key]
} else {
url= url + '&'+key+'=' + query[key]
}
}
}
var jsondata = UrlFetchApp.fetch(url, fetchOptions);
var object = JSON.parse(jsondata.getContentText());
return object;
}
function ImportJSONBearerAuth_(url, token, query) {
var header = {headers: {Authorization: "Bearer " + token}};
return ImportJSONAdvanced_(url, header, query);
}
function ImportJSONApiKeyAuth_(url,token, query) {
if (apikey == '' || apikey == '') {
[apikey, apisecret] = token.split(':')
}
var header = {headers: {apikey: apikey, apisecret: apisecret}};
return ImportJSONAdvanced_(url, header, query);
}
/*
Vizir Functions
*/
function getConversationStatistics_(sheetName, chatbotId, envId, token) {
var weeknumber = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName).getRange(cells.conversationStatistics.weekNumberCell).getValue();
var url = baseUrl + '/chatbots/'+chatbotId+ '/environments/'+ envId +'/statistics/sheets';
var query = {
week_number: weeknumber
}
let columns = ['Week Number','from', 'nb_users', 'new_users', 'nb_messages', 'nb_live_messages', 'total_request', 'understood', 'notunderstood']
var data;
if (token && token.indexOf('ey') > -1 ) {
data = ImportJSONBearerAuth_(url, token, query)
} else {
data = ImportJSONApiKeyAuth_(url, token, query)
}
if (data && data.arrayPerso) {
for (let d=0; d< data.arrayPerso.length; d++) {
columns.push(data.arrayPerso[d]);
}
}
let returnData = [weeknumber]
for (let i=1; i< columns.length; i++) {
returnData.push(data[columns[i]])
}
return [[columns], [returnData]];
}
function getDateOfISOWeek(w, y) {
var simple = new Date(y, 0, 1 + (w - 1) * 7);
var dow = simple.getDay();
var ISOweekStart = simple;
if (dow <= 4)
ISOweekStart.setDate(simple.getDate() - simple.getDay() + 1);
else
ISOweekStart.setDate(simple.getDate() + 8 - simple.getDay());
return ISOweekStart;
}
function getStartingAndEndingWeek(date) {
return [new Date(date).getTime(), new Date(date).getTime() + 7*24*60*60*1000]
}
function getAttributeStatistics_(sheetName, token) {
var url = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName).getRange(cells.attributeData.urlApiCell).getValue();
var startingDate = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName).getRange(cells.attributeData.startingDate).getValue();
var endingDate = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName).getRange(cells.attributeData.endingDate).getValue();
url = url + '&from='+ startingDate.getTime() + '&to=' + endingDate.getTime()
var data;
if (token && token.indexOf('ey') > -1 ) {
data = ImportJSONBearerAuth_(url, token, {})
} else {
data = ImportJSONApiKeyAuth_(url, token, {})
}
if (Array.isArray(data.data[0])) {
// Old function that return arrays
headers = data.data[0];
result = data.data.splice(0,1)
} else {
// New function that return json
[headers, emptyLine] = getHeaders(data.data)
result = getValues(data.data, headers, emptyLine)
}
return [[headers], result];
}
function getResourceStatistics_(sheetName, chatbotId, envId) {
var weeknumber = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName).getRange(cells.resourceStatistics.weekNumberCell).getValue();
var year = new Date().getFullYear();
var date = getDateOfISOWeek(weeknumber, year);
var startingDates = getStartingAndEndingWeek(date)
var url = baseUrl + '/chatbots/'+chatbotId+ '/environments/'+ envId +'/statistics/resources?page=1&from='+ startingDates[0] + '&to=' + startingDates[1];
var query = {
week_number: weeknumber
}
let columns = ['Week Number','from', 'Resource Title', 'Nombre de vues']
var data;
data = ImportJSONApiKeyAuth_(url, token, query)
let result = data.data.map(line => ["", weeknumber,new Date(startingDates[0]), line.title, line.nb_users])
return [[columns], result]
}
function getHeaders (data) {
var headers = [];
var emptyLine = [];
data.map(line => {
for (key in line) {
if (headers.indexOf(key) === -1) {
headers.push(key);
emptyLine.push('')
}
}
})
return [headers, emptyLine];
}
function getValues (data, headers, emptyLine) {
var values = [];
data.map(line => {
var lineValues = JSON.parse(JSON.stringify(emptyLine));
for (key in line) {
var index = headers.indexOf(key);
lineValues[index] = line[key];
}
values.push(lineValues);
})
return values;
}
/*
Initiation Script
*/
function initScript () {
var url = baseUrl + '/chatbots';
var data;
var query = {};
if (token && token.indexOf('ey') > -1 ) {
data = ImportJSONBearerAuth_(url, token, query)
} else {
data = ImportJSONApiKeyAuth_(url, token, query)
}
return data.data;
}
/*
function onOpen() {
var ui = SpreadsheetApp.getUi();
ui.createMenu('Vizir')
.addSubMenu(ui.createMenu('Data')
.addItem('Conversation Statistics Template', 'importConversationStatisticsTemplate')
.addItem('Attribute Data Template', 'importGetAttributeStatisticsTemplate'))
.addToUi();
}
*/
# Bonus automatiser la récupération des statistiques
Avec cette nouvelle version disponible depuis le 15 avril 2021, vous pouvez facilement automatiser la récupération des statistiques à intervals réguliers.
Voici comment le faire:
# Déclarer les Feuilles de calcul
Dans le script que vous avez collez dans google Script vous pouvez voir en ligne 3 la déclaration suivante:
var dataSheets = {
conversationStatistics: ['convStatistics'],
attributeData: []
}
Le script que nous allons lancer de maniÚre automatique tous les lundi (ou tout autre jour de la semaine), va récupérer la liste de toutes les feuilles de calculs présentes dans cette liste.
Ajouter le nom de vos feuilles de calcul dans la liste qui correspond.
DANGER
Il est indispensable de bien respecter le type de données qu'on récupÚre. Indiquez bien dans conversationStatistics la liste des feuilles de calculs qui récupÚrent des données de conversation et dans attributeData la liste des feuilles de calculs qui récupÚrent les données d'attributs.
# Automatiser le lancement du script
- Cliquez sur la gauche de l'écran sur Déclencheurs (comme ci dessous)
- En bas à droite, cliquez sur ajouter un déclencheur
- Choisissez la fonction automateGetStatistics et Choisissez les paramĂštres comme vous le souhaitez
Et voilĂ âšâšâš!!
Tous les lundi entre 7h et 8h vous aurez vos statistiques qui seront remontées dans votre Excel.