@fastbot/sdk
TypeScript icon, indicating that this package has built-in type declarations

1.0.1 • Public • Published
import {DialogManager, InMemoryDataStore, InMemoryDialogSet} from "./models";
import {RedisDataStore} from "./redis";
import {MemjsDataStore} from "./memjs";
const dialogSet = new InMemoryDialogSet();


dialogSet.addRoot({
    run: ({ state, request , dialog, dialogSet}) => {
        return dialogSet.init({
            text: 'Welcome. Choose option:' +
                '\n1. Show Balance' +
                '\n2. Buy Airtime',
            contentType: "TEXT"
        });
    },
    next: {
        "1": "showBalance",
        "2": "buyAirtime"
    }
})

dialogSet.addDialog({
    name: 'buyAirtime',
    run: ({ request}) => {
        return dialogSet.con({ text: "Enter amount:", contentType: "TEXT"});
    },
    _default: 'buyAirtime.amount'
})

dialogSet.addDialog({ name: 'showBalance',
    run: ({ request }) => {
        return dialogSet.end({ text: 'Your balance is KES ', contentType: "TEXT"});
    }
})

dialogSet.addDialog({
    name: 'buyAirtime.amount',
    run: ({ state , request}) => {
        // use menu.val to access user input value

        return dialogSet.end({ text : "Airtime bought successfully.", contentType: "TEXT"});

    }
});





const RunExample = async () => {

    const redis =  require("redis");
    const client  = redis.createClient({
        url: process.env.REDIS_URL
    })

    const memjs = require('memjs')
    const memjsClient = memjs.Client.create(process.env.MEMCACHED_URL, {
        username: process.env.MEMCACHED_USERNAME,
        password: process.env.MEMCACHED_PASSWORD,
        timeout: 3,
        retries: 6
    })



    client.on("error", function(error: any) {
        console.error(error);
    });

    client.set("key", "value", redis.print);
    client.get("key", redis.print);

    // const dataStore = new InMemoryDataStore();
    //  const app = new DialogManager(dialogSet, new RedisDataStore(client));

    const app = new DialogManager(dialogSet, new MemjsDataStore(memjsClient));

    let rp1 = await app.handle({channelType: 'facebook', session: "user-1", text: "Hello", user: "user-1", contentType: "TEXT"})
    console.log({rp1})
    let rp2 = await app.handle({channelType: 'facebook', session: "user-1", text: "1", user: "user-1", contentType: "TEXT"})
    console.log({rp2})
    let rp3 = await app.handle({channelType: 'facebook', session: "user-1", text: "1", user: "user-1", contentType: "TEXT"})
    console.log({rp3})

    let rp4 = await app.handle({channelType: 'facebook', session: "user-1", text: "2", user: "user-1", contentType: "TEXT"})
    console.log({rp4})

    let rp5 = await app.handle({channelType: 'facebook', session: "user-1", text: "2", user: "user-1", contentType: "TEXT"})
    console.log({rp5})

    client.quit(function (error: Error | null){
        console.log({ error })
    })

    await memjsClient.quit()
};

Readme

Keywords

none

Package Sidebar

Install

npm i @fastbot/sdk

Weekly Downloads

2

Version

1.0.1

License

UNLICENSED

Unpacked Size

32.7 kB

Total Files

20

Last publish

Collaborators

  • atkawa7