Skip to content

New skill handling support in botbuilder JS SDK with Directline Speech #1655

Closed

Description

Versions

botbuilder 4.7
node 10.16.3
macOS 10.14

Describe the bug

TL;DR;
It looks like the botbuilder-skills package is no longer being maintained, and instead similar functionality has been rolled into the botbuilder package. However, this new functionality does not appear to support Direct Line Speech out of the box - is there a timescale for that?

Full Description:
We discovered that the previous botbuilder-skills SDK seems to have been deprecated or at least not been worked on in a while and skill support been added to the main botbuilder JS SDK. To date we have been depending on the botbuilder-skills package.

Evaluating the changes necessary to migrate we noticed, that the example (https://github.com/microsoft/BotBuilder-Samples/tree/master/samples/javascript_nodejs/80.skills-simple-bot-to-bot) is specifically targeting DirectLine, as does the SDK itself. Support for DirectLine Speech is only possible with quite a bit of additional work as the way the adapter is being handled is not the same.

As there's not a single BotFrameworkAdapter but one for every WebSocket connection, it would also mean the new SkillHandler as well as ChannelServiceRoutes have to exist multiple times, which results in every conversation/connection resulting in a different endpoint via the SkillHandler (skillEndpoint.register(server, '/api/skills');).
Which currently is not easy to cleanup as the WebSocket does not seem to expose a disconnected event. This would result in a memory leak.

Apart from that, the solution does not necessarily scale with DirectLine Speech and multiple bot instances. A skill would only know the load balancer's URL and therefore might post back the response to an incorrect instance of the bot, which does not actually maintain the open client WebSocket connection.

A possible workaround for that would be some kind of message queue between skill and skill handler to distribute the responses – which is quite a bit of additional work.

I wonder if there's a different scaling solution Microsoft had in mind when designing this new skill architecture.

[bug]

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Labels

Bot ServicesRequired for internal Azure reporting. Do not delete. Do not change color.bugIndicates an unexpected problem or an unintended behavior.customer-replied-toIndicates that the team has replied to the issue reported by the customer. Do not delete.customer-reportedIssue is created by anyone that is not a collaborator in the repository.

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions