Documentation

Do you use documentation to use NewBot Framework

Envoyer des données lors de l'exécution du chatbot

Parfois, il faut envoyer des données pour savoir d'où vient l'utilisateur ou d'autres informations.

const NewBot = require('newbot')
// after `newbot build`
const mainSkill = require('./dist/node/bot')

const converse = new NewBot(mainSkill)
converse.exec('Hey', 'user id', {
    output(text, done) => {
        console.log(text)
        done()
    },
    data: {

    }
})

Le troisième paramètre est un objet. Il contient la propriété data pouvant avoir n'importe quel type de donnée.

Récupérer les données

Vous pouvez retrouver les données dans les fonctions de la compétence, l'écriture des formats, le décorateur @Condition, etc. Par exemple, lorsque vous écrivez une fonction, vous avez la propriété data:

import code from './main.converse'

export default {
    code,
    functions: {
        foo() {
            const { data } = this.converse
            console.log(data)
        }
    }
}

Dans le cas d'un format, data est un paramètre :

import code from './main.converse'

export default {
    code,
    formats: {
        foo(text, params, data) {
            console.log(data)
        }
    }
}

Requis pour le module newbot-formats

Lorsque vous exécutez une compétence utitlisant le module newbot-formats, vous devez exécutez la compétence en envoyant un objet session :

const NewBot = require('newbot')
// after `newbot build`
const mainSkill = require('./dist/node/bot')

const converse = new NewBot(mainSkill)
converse.exec('Hey', 'user id', {
    output(text, done) => {
        console.log(text)
        done()
    },
    data: {
        session: {
            message: {
                source: 'messenger',
                agent: 'bottender'
            }
        }
    }
})

Ces données indiquent la source et l'agent. Cela permettra de savoir d'où vient l'utilisateur et lui envoyer la réponse sur la bonne platforme.

Pour simplifier et uniformiser l'écriture de l'objet session, le paquet newbot-formats contient des objets de type Session déjà dévelopé par platforme et agent (ex: newbot-formats/session/bottender). Voit chapitre Utiliser avec Bottender

Dans les tests unitaires

Le test unitaire peut envoyer aussi des données :

import { ConverseTesting } from 'newbot/testing'
import mainSkill from './main'

describe('My own test', () => {
    let converse, userConverse

    beforeEach(() => {
        converse = new ConverseTesting(mainSkill)
        userConverse = converse.createUser({
            session: {
                message: {
                    source: 'website'
                }
            }
        })
    })
})

Le premier paramètre de la méthode createUser contient l'objet correspondant à data

© 2019 NewBot