[Typescript] Add GA SDK Skill support to VA/Skill Generator #2489
Comments
hi Darrenj, |
Hoping to have end to end working for testing this week all being well. |
Thank you @darrenj for the update. |
is there any update on this issue @darrenj |
Hi Darren, @darrenj could you please provide an update on this work item. we need this critical feature to be developed for our use case. appreciate your help. thanks, |
Hi @darrenj , Sorry to bother you again, there are any update on this? |
There are a few things in flight here, one is the streaming extension availability which you've spotted and the other is the typescript availability of the new GA version of the Skills library. I am expecting the first packaged build of the Skills library next week at which point we can start updates of both the C# and Typescript templates to test and provide the (simple) migration steps. We are targeting having this work ready for use in January and will keep this issue updated with progress including when daily builds are available. In the meantime a Javascript/Typescript VA Bot can call a Skill created in JavaScript/Typescript as this uses HTTP due to the lack of the streaming extension dependency. The issue comes in when you wish to call a C# Skill like Calendar which the above changes will align across all languages. |
@darrenj is this fixed and can I connect C# Skill from typescript VA? I am confused about your last comment. |
Yes, migration to the GA version of Skills removes the dependency on Websockets and thus will enable seamless mix/match of skills across platforms. We have the latest bits for C# and JS and working on initial integration, goal is to get changes into a daily build within the next couple of weeks to unblock scenarios. |
Hi @darrenj, I have another use case which is Typescript VA and Typescript Skill. My problem is that the updateActivity is not available across the VA to the Skill and I need the streaming library for this (as far as I understood). Now I actually noticed that the WebSocket dependencies have been removed from the latest skills library (4.4.9). |
OK, I have an update on progress with regard to the GA of the Skill capabilities within the Bot Framework SDK. This has transitioned the work incubated by Virtual Assistant into a formal GA version. A sample is available that shows how a Bot can invoke another Bot (Skill). Key change is we now have a unified adapter meaning there is no need to utilise a different adapter or Streaming extensions. C# and JS. We are working on updates to the Virtual Assistant / Skill template to provide the (small) changes out of the box and provide documentation on the few steps required to update existing Skills. Targeting end of January, with builds on our daily builds soon. If you are keen to make progress ahead of this the above samples should give you everything you need. I'll update this issue with pointers to daily builds/changes as soon as they are ready. |
@darrenj thank you for the this awesome update. I am just curious to know about unified adapter before we start leveraging that in our production Virtual assistant. Does this mean we can use unified adapter in Typescript VA and can still invoke c# skill ? |
A long awaited update! We posted our 0.8 release yesterday which include an update to all of our sample Skills to support the new GA Skills capability and no longer preview. Websockets has been retired in favour of Web-Service communication between skills, Skills communicate back to the Bot asynchronously using a "callback" HTTP connection. As a result there are some straight forward updates to existing Virtual Assistant and Skills to be made. C# VA updates are documented here and C# Skill updates are documented here. The equivalent JS/Typescript generator changes are being finalised as we speak and targeting publishing of a new Generator and docs for existing VA/Skills by 14th February. For background reference, the high level steps to support invoking skills can be found here Once these changes are complete it means a JS/typescript VA can invoke C# Skills, vice versa and indeed Python too. |
@tomSauret847 let me know if you see any other issues. We are completing final validation and will push new builds to npm once complete. |
Hi @darrenj , I got an error when trying to resolve the lg files with the new template manager, basically what happens is that I'm receiving the locale en-US from MS Teams but I set only en-us ( lower case ) and is not going to be recognized. Maybe adding a lower case here
This works well but I don't know if can be done in a better way. |
Thanks. @Batta32 - can you check to see if you have the change to LocaleTemplateEngine in the solutions Lib which uses the SDK provided @lzc850612 Can we run a quick validation with the csharp GA RC to double check it works as expected with mixed case locales coming into the Bot on an Activity? |
Sure @darrenj, we will be checking that change! |
@darrenj thank you for the update on the progress! I had the same locale issue that tommyJimmy pointed but got past it by add locale.toLowerCase in the localeTemplateManager. I am currently attaching a custom skill to the VA but still receiving an error I am trying to track down. The skill is returning a 501 error to the VA but it is processing the message in the onMessage function in the defaultActitivityHandler.ts, it is just not passing the activity over to the main dialog for the skill to process. I added the skill by updating the appSettings.json file, and the skill is receiving the activity. |
@Batta32 I was wanting to check if the path forward still includes the localTemplateEngineManager. I noticed it is missing from the preview builds and only responseManager is present. Moving forward are we going to need to use the Response manager or is the Locale template going to be added back? |
@Batta32 I was able to track down the error that I was receiving on communicating with a skill from the VA. In the dialogEx module there is a send trace that is sending the trace back to the VA that the skill was started. This sendActivity is throwing the following error when called: Update: |
@Batta32 @darrenj I'm facing an unexpected behavior when trying to use the chitchat with the VA: basically every time the user asks something to the Bot the introstep will reprompt the initial message, which in the case of chitchat is not great as UX. Is this an expected or I'm missing something? (the please hold on message is a custom message don't worry about that |
@tomSauret847 What was your problem? because I'm having the same error and don't understand what is it. In my Virtual Assistant I have this :
|
@Batta32 I was able to deploy my VA and 1 skill to Azure. When I use the web chat everything works as expected. When I try to use the teams channel I receive the below error. This seems to be isolated to the Teams channel since the web chat is routing correctly. @tommyJimmy87 I was not using ngrok to communicate from VA to skill locally so I was able to use the localhost:3979/api/skills for the skillHostEndpoint and was able to reach the skill. Since you are using the Teams channel as well I will say this is a issue with the Teams channel. You can try reaching the skill using the web chat and see if you can communicate with the skill from the VA in azure. |
Hi @Batta32, I agree with @tomSauret847 that most likely there's some kind of problem whit the Teams Channel. After a bit of debugging I might try to explain what I have found out:
i.e. File : ChannelServiceHandler.ts (botbuilder) , line : 219
|
Hi @tommyJimmy87, @tomSauret847 - sorry for the delay. We will be reviewing the Teams Channel's scenario using the GA Skills SDK changes and we will back to this thread later 😊. |
@tommyJimmy87 - we successfully reproduced the issue using Microsoft Teams Channel. We will back to this thread as soon as we fix the problem. Thanks! |
Hi @tommyJimmy87, @tomSauret847, we successfully found the reason of the problem. The problem is that the ':' character is being replaced to '%3A' when the activities are sent back to the Virtual Assistant from the Skill, generating the mismatching of conversationId between both bots. Last but not least, there is an issue in microsoft/botbuilder-js#2182 which replaces axios in botbuilder and it's tagged to be ready for R10. We are going to update the Known Issues document explaining the problem Finally, we will be back to this thread as soon as we have new updates for you guys 😊 |
@Batta32 Do you think will be fixed soon or will take a bit of time? |
@tommyJimmy87, @tomSauret847 - we noticed that the problem is in ms-rest-js instead of axios. The problem is a mismatch of Sorry for the mistake 😊. |
@Batta32 the default agent for ms-rest-js versions < 2.0 is axios https://github.com/Azure/ms-rest-js/blob/1.x/lib/axiosHttpClient.ts I think one way to resolve this issue would be to use encodeURI within the SkillConversationIdFactory implementation. This way, the underlying agent will not alter the conversation.id from what is stored within the factory. |
Thanks @EricDahlvang, we will be reviewing the alternative of use |
@EricDahlvang - adding the We realized that the issue might be related to the conversationId's length when it's received from Microsoft Teams. We noticed that using the original Last but not least, this issue is not present in C#. The endpoint is not hitted with the original conversationId |
@Batta32 If the SkillConversationIdFactory uses encodeURI, then the skill will receive that conversation.id and respond to it accordingly. I'm pretty sure this is required. Also yes, there is an issue with long conversation ids while using restify. We make mention of how to resolve the issue in this sample: https://github.com/microsoft/BotBuilder-Samples/blob/master/samples/javascript_nodejs/80.skills-simple-bot-to-bot/simple-root-bot/skillConversationIdFactory.js#L21
|
@EricDahlvang Thank you for this information. I added the update to both my VA and skill. I am now able to get the VA to communicate with the skill in the Teams channel without error. |
Thanks @EricDahlvang for the provided information! We created the PR #3359 improving the Thanks guys @tommyJimmy87, @tomSauret847, as soon as these changes are merged, you will be able to test it 😊. |
@Batta32 sorry to bother you again, first of all, I applied the changes and now it is working. Now I have a problem with the update activity of skill through the VA, within the SkillHandler there's no implementation for that, could you provide one? Thx |
Hi @tommyJimmy87, we noticed that the @darrenj - can you confirm that the absence of |
@Batta32 I actually tried this, the implementation looks like this :
And the
It's basically a copy of the Said that I'm getting this error :
Probably there's something that I'm missing or I'm doing wrong. |
@tommyJimmy87 - we will try to reproduce your scenario and we will back to you later 😊. |
@Batta32 I noticed on the "Help card" with the Virtual assistant that it is not displaying the help card for the active skill. When you hit the "help" interrupt while in the skill dialog it is still presenting the help card for the VA and not the skill. I have updated to the last release that included setting the activeSkillProperty state with the skill that is active. Any ideas on how to fix this issue? Logging out the state the active dialog is still registered as a dialog I have in the VA and not the active skill. |
Hi @tommyJimmy87, @tomSauret847, thanks for reporting these issues. As generator-bot-virtualassistant@1.0.0, bot-solutions@1.0.0 and botskills@1.0.15 are published in npmjs and merged in branch |
Following a Skill protocol change to WebSockets we have been waiting on a new Streaming Extensions library to be available for Typescript, previously only available for C#. This will unblock Skill invocation scenarios for Virtual Assistant when using Typescript.
User Story
As ... a Developer
I want ...to be able to connect skills to a TypeScript version of the Virtual Assistant
so that ...there is parity between C# and Typescript
Acceptance Criteria
The text was updated successfully, but these errors were encountered: