botbuilder-wechat-connector-ts
TypeScript icon, indicating that this package has built-in type declarations

1.0.0 • Public • Published

botbuilder-wechat-connector

NodeJS Typescript Botbuilder Wechat Connector

version travis build codecov coverage Codacy Badge dependency status MIT License semantic-release Commitizen friendly stability-stable Greenkeeper code style

Notice

Targets BotBuilder Framework v3.*

Installation

npm install botbuilder-wechat-connector-ts

Table of Contents

Documentation

You can find documentation here

Features

  • Microsoft Bot Framework Wechat Connector with simple setup
  • Webhook Validation logic
  • Supported message types:
    • Text
    • Image
    • Card
    • Music
    • MpNews
    • News
    • Voice
    • Video
    • ShortVideo
    • Link
    • Location
  • Typescript code with exported types for every end-point input/output
  • Vanilla server and AWS Lambda support

Setup

Import

const facebook = require('botbuilder-wechat-connector');

or

import { WechatConnector, AWSLambdaHandler } from 'botbuilder-wechat-connector';

Sending Messages

Text Message

bot.dialog('/', function (session) {
    session.send("Hello world!");
});

Image Message

import {Message} from 'botbuilder';
bot.dialog('/', function (session) {
    const msg = new Message(session)
                 .attachments([
        {
            contentType: IWechatAttachmentType.Image,
            content: {
                mediaId: '<MEDIA_ID>'
            }
        }
    ]);
    session.send(msg);
});

Card Message

import {Message} from 'botbuilder';
bot.dialog('/', function (session) {
    const msg = new Message(session)
                 .attachments([
        {
            contentType: IWechatAttachmentType.Card,
            content: {
                card_id: '<CARD_ID>',
                card_ext: '<CARD_EXT>'
            }
        }
    ]);
    session.send(msg);
});

Music Message

import {Message} from 'botbuilder';
bot.dialog('/', function (session) {
    const msg = new Message(session)
                 .attachments([
        {
            contentType: IWechatAttachmentType.Music,
            content: {
                title: '<TITLE>',
                description: '<DESCRIPTION>',
                url: '<URL>',
                thumb_media_id: '<MEDIA_ID>'
            }
        }
    ]);
    session.send(msg);
});

MpNews Message

import {Message} from 'botbuilder';
bot.dialog('/', function (session) {
    const msg = new Message(session)
                 .attachments([
        {
            contentType: IWechatAttachmentType.MpNews,
            content: {
                mediaId: '<MEDIA_ID>'
            }
        }
    ]);
    session.send(msg);
});

News Message

import {Message} from 'botbuilder';
bot.dialog('/', function (session) {
    const msg = new Message(session)
                 .attachments([
        {
            contentType: IWechatAttachmentType.News,
            content: {
                "title": "<TITLE>",
                "description": "<DESCRIPTION>",
                "url": "<URL>",
                "picurl": "<URL>"            
            }
        }
    ]);
    session.send(msg);
});

Voice Message

import {Message} from 'botbuilder';
bot.dialog('/', function (session) {
    const msg = new Message(session)
                 .attachments([
        {
            contentType: IWechatAttachmentType.Voice,
            content: {
                mediaId: '<MEDIA_ID>'
            }
        }
    ]);
    session.send(msg);
});

Video Message

import {Message} from 'botbuilder';
bot.dialog('/', function (session) {
    const msg = new Message(session)
                 .attachments([
        {
            contentType: IWechatAttachmentType.Video,
            content: {
                mediaId: '<MEDIA_ID>',
                thumbMediaId: '<THUMB_MEDIA_ID>'
            }
        }
    ]);
    session.send(msg);
});

Receiving Messages

ShortVideo Message

{
    contentType: IWechatAttachmentType.ShortVideo,
    content: {
        mediaId: '<MEDIA_ID',
        thumbMediaId: '<THUMB_MEDIA_ID>'
    }
}

Link Message

{
    contentType: IWechatAttachmentType.Link,
    content: {
            title: '<TITLE>',
            description: '<DESCRIPTION>',
            url: '<URL>'
        }
}

Location Message

{
    contentType: IWechatAttachmentType.Link,
    content: {
        locationX: '<LOCATION_X>',
        locationY: '<LOCATION_Y>',
        scale: '<SCALE>',
        label: '<LABEL>'
    }
}

Example Express

import { WechatConnector } from 'botbuilder-wechat-connector';
import { UniversalBot } from 'botbuilder';
import { Router } from 'express';
 
const botConnector = new WechatConnector({
      appID: WECHAT_APP_ID,
      appSecret: WECHAT_APP_SECRET,
      appToken: WECHAT_APP_TOKEN,
    });
 
const bot = new UniversalBot(botConnector, <DIALOGS>);
 
const router = Router();
    router.post('/api/messages', <RequestHandlerParams>botConnector.listen());
    router.get('/api/messages', <RequestHandlerParams>botConnector.listen());

Example AWS Lambda

main.ts

import { WechatConnector, AWSLambdaHandler } from 'botbuilder-wechat-connector';
import { UniversalBot } from 'botbuilder';
 
const botConnector = new WechatConnector({
      appID: WECHAT_APP_ID,
      appSecret: WECHAT_APP_SECRET,
      appToken: WECHAT_APP_TOKEN,
    });
 
const bot = new UniversalBot(botConnector, <DIALOGS>);
 
export botConnector;

lambda.ts

import {botConnector} from './main';
import {AWSLambdaHandler} from 'botbuilder-wechat-connector';
export const handler = AWSLambdaHandler.handle(botConnector)

Creating Wechat App

See Wechat Guide

Package Sidebar

Install

npm i botbuilder-wechat-connector-ts

Weekly Downloads

0

Version

1.0.0

License

MIT

Unpacked Size

25.6 kB

Total Files

17

Last publish

Collaborators

  • crisboarna