Skip to content

Instantly share code, notes, and snippets.

View JonJam's full-sized avatar

Jonathan Harrison JonJam

View GitHub Profile
@JonJam
JonJam / bot.ts
Created January 11, 2018 09:18
LUIS
import { ChatConnector, LuisRecognizer, UniversalBot } from "botbuilder";
import { appId, appPassword, luisAppUrl } from "../settings";
import colour from "./dialogs/colour";
import defaultDialog from "./dialogs/default";
// Create chat connector for communicating with the Bot Framework Service
const connector = new ChatConnector({
appId,
appPassword
});
@JonJam
JonJam / colour.ts
Created January 11, 2018 09:03
Prompt
import { IPromptChoiceResult, Library, ListStyle, Prompts } from "botbuilder";
import { format } from "util";
import strings from "../../strings";
import { setColour } from "../data/userData";
const lib = new Library("colour");
lib
.dialog("setFavourite", [
session => {
@JonJam
JonJam / global.ts
Created January 11, 2018 08:58
Global dialog
import { Library, Session } from "botbuilder";
import strings from "../../strings";
const lib = new Library("global");
lib
.dialog("help", (session: Session) => {
session.endDialog(strings.global.help.message);
})
.triggerAction({
@JonJam
JonJam / bot.ts
Created January 11, 2018 08:38
Storage
import { ChatConnector, UniversalBot } from "botbuilder";
import { appId, appPassword } from "../settings";
import defaultDialog from "./dialogs/default";
import storage from "./storage";
// Create chat connector for communicating with the Bot Framework Service
const connector = new ChatConnector({
appId,
appPassword
});
@JonJam
JonJam / greetings.ts
Created January 11, 2018 08:28
First run dialog
import { Library } from "botbuilder";
import strings from "../../strings";
import { getFirstRun, setFirstRun } from "../data/userData";
const lib = new Library("greetings");
// Universal channel support for first run, see https://docs.microsoft.com/en-us/bot-framework/nodejs/bot-builder-nodejs-handle-conversation-events#add-a-first-run-dialog
lib
.dialog("firstRun", session => {
setFirstRun(session, true);
@JonJam
JonJam / global.ts
Last active January 11, 2018 08:20
Using libraries
import { Library, Session } from "botbuilder";
import strings from "../../strings";
const lib = new Library("global");
lib
.dialog("help", (session: Session) => {
session.endDialog(strings.global.help.message);
})
.triggerAction({
@JonJam
JonJam / non_library_bot.js
Last active January 11, 2018 08:10
Unstructured bot dialogs
var inMemoryStorage = new builder.MemoryBotStorage();
// This is a dinner reservation bot that uses multiple dialogs to prompt users for input.
var bot = new builder.UniversalBot(connector, [
function (session) {
session.send("Welcome to the dinner reservation.");
session.beginDialog('askForDateTime');
},
function (session, results) {
session.dialogData.reservationDate = builder.EntityRecognizer.resolveTime([results.response]);
@JonJam
JonJam / index.js
Created November 1, 2017 08:49
validation: run validation
import { validate } from "class-validator";
import Site from "./Site";
const params = {
// Causing max length error
name:
"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam aliquam tortor vitae neque iaculis tincidunt.",
// Causing not valid email address error
emailAddress: "invalidemail",
url: "http://test.com",
@JonJam
JonJam / Site.ts
Created November 1, 2017 08:47
validation-ts: class
import { IsEmail, IsNotEmpty, IsUrl, MaxLength } from "class-validator";
interface ISite {
readonly name: string;
readonly url: string;
readonly emailAddress: string;
readonly password: string;
}
export default class Site implements ISite {
@JonJam
JonJam / authenticationActions.ts
Last active October 27, 2017 06:56
react-redux-ts: Actions
import { Dispatch } from "redux";
import {
signIn as signInToApi,
signOut as signOutFromApi
} from "../../api/authenticationApi";
import IStoreState from "../../store/IStoreState";
import keys from "../ActionTypeKeys";
import {
ISignInFailAction,
ISignInInProgressAction,