
Security News
Deno 2.2 Improves Dependency Management and Expands Node.js Compatibility
Deno 2.2 enhances Node.js compatibility, improves dependency management, adds OpenTelemetry support, and expands linting and task automation for developers.
botframework-directlinejs
Advanced tools
client library for the Microsoft Bot Framework Direct Line 3.0 protocol
Client library for the Microsoft Bot Framework Direct Line protocol.
Used by WebChat and thus (by extension) Emulator, WebChat channel, and Azure Bot Service.
Anyone who is building a Bot Framework JavaScript client who does not want to use WebChat.
If you're currently using WebChat, you don't need to make any changes as it includes this package.
subscribe()
method in the samples below?Instead of callbacks or Promises, this library handles async operations using the Observable pattern. Try it, you'll like it. For more information, check out RxJS.
You bet.
This is an official Microsoft-supported library, and is considered largely complete. Future changes (aside from supporting future updates to the Direct Line protocol) will likely be limited to bug fixes, performance improvements, tutorials, and samples. The big missing piece here is unit tests.
That said, the public API is still subject to change.
npm install
npm run build
(or npm run watch
to rebuild on every change)There are several ways:
/directLine.js
(webpacked with rxjs) or built/directline.js
in your app<script src="http://unpkg.com/botframework-directlinejs/directLine.js"/>
npm install botframework-directlinejs
var directLine = new DirectLine({
secret: /* put your Direct Line secret here */,
token: /* or put your Direct Line token here (supply secret OR token, not both) */,
domain: /* optional: if you are not using the default Direct Line endpoint, e.g. if you are using a region-specific endpoint, put its full URL here */
webSocket: /* optional: false if you want to use polling GET to receive messages. Defaults to true (use WebSocket). */,
});
directLine.postActivity({
from: { id: 'myUserId', name: 'myUserName' }, // required (from.name is optional)
type: 'message',
text: 'a message for you, Rudy'
}).subscribe(
id => console.log("Posted activity, assigned ID ", id),
error => console.log("Error posting activity", error)
);
You can also post messages with attachments, and non-message activities such as events, by supplying the appropriate fields in the activity.
directLine.activity$
.subscribe(
activity => console.log("received activity ", activity)
);
You can use RxJS operators on incoming activities. To see only message activities:
directLine.activity$
.filter(activity => activity.type === 'message')
.subscribe(
message => console.log("received message ", message)
);
Direct Line will helpfully send your client a copy of every sent activity, so a common pattern is to filter incoming messages on from
:
directLine.activity$
.filter(activity => activity.type === 'message' && activity.from.id !== 'yourBotHandle')
.subscribe(
message => console.log("received message ", message)
);
Subscribing to either postActivity
or activity$
will start the process of connecting to the bot. Your app can listen to the connection status and react appropriately :
directLine.connectionStatus$
.subscribe(connectionStatus =>
switch(connectionStatus) {
case ConnectionStatus.Uninitialized: // the status when the DirectLine object is first created/constructed
case ConnectionStatus.Connecting: // currently trying to connect to the conversation
case ConnectionStatus.Online: // successfully connected to the converstaion. Connection is healthy so far as we know.
case ConnectionStatus.ExpiredToken: // last operation errored out with an expired token. Your app should supply a new one.
case ConnectionStatus.FailedToConnect: // the initial attempt to connect to the conversation failed. No recovery possible.
case ConnectionStatus.Ended: // the bot ended the conversation
}
);
If your app created your DirectLine object by passing a token, DirectLine will refresh that token every 15 minutes.
Should your client lose connectivity (e.g. close laptop, fail to pay Internet access bill, go under a tunnel), connectionStatus$
will change to ConnectionStatus.ExpiredToken
. Your app can request a new token from its server, which should call
the Reconnect API.
The resultant Conversation object can then be passed by the app to DirectLine, which will
var conversation = /* a Conversation object obtained from your app's server */;
directLine.reconnect(conversation);
© 2017 Microsoft Corporation
FAQs
Client library for the Microsoft Bot Framework Direct Line 3.0 protocol
The npm package botframework-directlinejs receives a total of 16,481 weekly downloads. As such, botframework-directlinejs popularity was classified as popular.
We found that botframework-directlinejs demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 8 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Deno 2.2 enhances Node.js compatibility, improves dependency management, adds OpenTelemetry support, and expands linting and task automation for developers.
Security News
React's CRA deprecation announcement sparked community criticism over framework recommendations, leading to quick updates acknowledging build tools like Vite as valid alternatives.
Security News
Ransomware payment rates hit an all-time low in 2024 as law enforcement crackdowns, stronger defenses, and shifting policies make attacks riskier and less profitable.