Constructor
new WebhookClient(optionsopt)
- Source:
- See:
-
Example
Simple client for sending and receivinng messages.
const OracleBot = require('@oracle/bots-node-sdk');
const express = require('express');
const app = express();
OracleBot.init(app); // init main application layer
// define webhook channel configuration.
// can also be function (req => WebhookChannel | Promise<WebhookChannel>)
const channel = {
url: process.env.BOT_WEBHOOK_URL,
secret: process.env.BOT_WEBHOOK_SECRET
};
const webhook = new OracleBot.Middleware.WebhookClient({ channel });
// receive messages from bot and forward to user
app.post('/webhook/receiver', webhook.receiver((req, res) => {
const { userId, messagePayload } = req.body;
// Message was received and validated from bot. Forward to user accordingly...
}))
// receive messages from a client webhook and forward to bot
app.post('/webhook/:client/message', (req, res) => {
let message = {};
// assign userId, messagePayload, profile, etc... on message and send
webhook.send(message)
.then(() => res.send('ok'), e => res.status(400).send())
});
Parameters:
Methods
- Description:
- Returns the MessageModel class for creating or validating messages to or from bots.
- Source:
Returns:
The MessageModel class
-
Type
-
MessageModel
on(event, handler) → {WebhookClient}
- Description:
- Subscribe to WebhookClient events
- Source:
Parameters:
Returns:
-
Type
-
WebhookClient
- Description:
- Receiver middleware to handle messages incoming from bot. If used without
callback, messages will be dispatched to any subscribers to the
WebhookEvent.MESSAGE_RECEIVED event.
- Source:
Parameters:
| Name |
Type |
Attributes |
Description |
callback |
WebhookReceiverCallback
|
<optional>
|
Optional callback for received messages from bot. |
Returns:
-
Type
-
WebhookReceiverMiddleware
send(message, channelopt)
- Description:
- Send client message to bot
- Source:
- See:
-
Parameters:
| Name |
Type |
Attributes |
Description |
message |
object
|
|
Complete payload to send |
channel |
WebhookChannel
|
<optional>
|
Webhook channel configuration to use (if different than that in the instance options) |
Type Definitions
WebhookChannel
- Description:
- Configuration details for sending messages to bots on a webhook channel.
- Source:
Properties:
| Name |
Type |
Description |
url |
string
|
Webhook url issued by bots platform channel |
secret |
string
|
Message signature secret key used to create X-Hub-Signature |
Configuration details for sending messages to bots on a webhook channel.
Type:
- Description:
- Callback used by webhook client to obtain channel configuration information
for a given request.
- Source:
Example
const { WebhookClient, WebhookEvent } = require('@oracle/bots-node-sdk').Middleware;
function getChannelForReq(req) {
const client = req.params.client;
return {
url: 'https://...', // Oracle bot webhook url specific to client
secret: '...', // webhook channel secret key
}
}
const webhook = new WebhookClient({
channel: getChannelForReq,
});
app.post('/bot/messages', webhook.receiver());
webhook.on(WebhookEvent.MESSAGE_RECEIVED, message => {
const { userId, messagePayload } = message;
// format and send to user.
});
Parameters:
| Name |
Type |
Attributes |
Description |
req |
external:ExpressRequest
|
<optional>
|
The request object originally sent to the endpoint |
Returns:
-
Type
-
WebhookChannel
|
Promise.<WebhookChannel>
WebhookClientOptions
- Description:
- Options to configure a webhook client endpoint where messages are forwarded
to the bot on a webhook channel.
- Source:
Properties:
Options to configure a webhook client endpoint where messages are forwarded
to the bot on a webhook channel.
WebhookEvent
- Description:
- WebhookEvent enum for WebhookClient event subscriptions
- Source:
WebhookEvent enum for WebhookClient event subscriptions
Example
const { WebhookClient, WebhookEvent } = require('@oracle/bots-node-sdk').Middleware;
const webhook = new WebhookClient({
channel: // ...
});
//...
webhook.on(WebhookEvent.ERROR, error => {
// webhook error
console.error(error);
});
webhook.on(WebhookEvent.MESSAGE_RECEIVED, message => {
// message received from bot.
// Format and send to user...
});
webhook.on(WebhookEvent.MESSAGE_SENT, message => {
// message was sent to bot.
});
WebhookEventHandler(detail) → {void}
- Description:
- Callback handler for WebhookClient event emitter.
- Source:
Parameters:
| Name |
Type |
Description |
detail |
*
|
Event detail payload. |
Returns:
-
Type
-
void
WebhookReceiverMiddleware(req, res, next) → {void}
- Description:
- Callback function upon successful webhook validation. Further validations may
be performed, and it is required to send the response for the webhook request.
as
res.send, res.json, etc. Note that this response is
NOT a message back to the bot.
- Source:
Parameters:
Returns:
-
Type
-
void