Forum Discussion

voonsionglum's avatar
voonsionglum
Brass Contributor
Nov 29, 2021

Root bot, skill bot and scaling

Hi,   We need help with scaling.   Problem statement: With 2 instances of root bot running, a skill bot invocation is unable to return results reliably to the root bot.   With 1 instance of the...
  • Slacked2737's avatar
    Slacked2737
    Dec 14, 2022

    voonsionglum 

    We had James check his data and found this. See if it helps. In the root bot:

     

    • Double check and be 100% sure that you're using the SkillConversationIdFactory that is a part of the MS chatbot framework (NOT one that you may have created). It should have a IStorage constructor parameter that lets you pass in whatever storage you want to use to persist ids used with skills communication. You probably need to use the class that is given to you in the chatbot framework. (i.e. SkillConversationIdFactory that inherits from"Microsoft.Bot.Builder.Skills.SkillConversationIdFactoryBase")

     

    • For the IStorage object used by SkillConversationIdFactory, If you are using some kind of in-memory only storage, (i.e. A ConcurrentDictionary or other MemoryStorage type object), that might be a problem. The code in SkillConversationIdFactory might not be persisting the conversation/skill ID lookup data (needed to talk with skills) into a place that other apps can read.

     

    I have found some old MS examples that give a "demo" of how to use skills and shows a SkillConversationIdFactory that uses in-memory storage...which of course won't scale or work across different apps.

     

    https://learn.microsoft.com/en-us/dotnet/api/microsoft.bot.builder.skills.skillconversationidfactory?view=botbuilder-dotnet-stable

     

     

Resources