Een chatbot verwijderen via API

Toen ik onlangs een commando schreef voor de CLI for Microsoft 365, was ik geïnteresseerd in het schrijven van een commando waarmee een chatbot verwijderd kon worden. Chatbots, ook wel bekend als Power Virtual Agents, maken deel uit van Dynamics 365 Customer Service. Het is dan ook niet verwonderlijk dat de onderliggende API’s gebaseerd zijn op Dynamics 365.

Het leek vrij eenvoudig: roep de juiste API aan met de delete-methode en je bent klaar.

[dynamicsApiUrl]/api/data/v9.0/bots([botId])

Maar niet echt… Wanneer je de bovenstaande API uitvoert, stuit je op een “400 bad request”-fout met de melding “The bot can not be deleted since it has dependent bot components. Remove the following dependencies before attempting to delete the bot…”.

Een vrij duidelijke omschrijving! Een bot bestaat uit meerdere bot-componenten en ze zijn allemaal gekoppeld aan de bot zelf. De bot kan dus niet worden verwijderd zolang de gekoppelde bot-componenten nog bestaan.

Je kunt de componenten één voor één verwijderen, maar je weet wat ze zeggen over ontwikkelaars… We houden ervan dingen eenvoudig te houden! Een andere API om alle bot-componenten op te halen, dit resultaat in een lus plaatsen waar ze één voor één worden verwijderd en vervolgens de bot zelf verwijderen, leek mij wat overdreven. Bovendien zou het te veel API-aanroepen genereren voor mijn smaak.

Voor de volledigheid: het verwijderen van een individueel botcomponent kan worden gedaan door de volgende API met de delete-methode aan te roepen:

[dynamicsApiUrl]/api/data/v9.0/botcomponents([botcomponentId])

Gelukkig is er één API die al dit werk voor ons aan de serverzijde doet en hoeven we slechts één API aan te roepen. Deze API is echter niet aanroepbaar met de delete-methode, maar moet worden uitgevoerd via de post-methode.

[dynamicsApiUrl]/api/data/v9.0/bots([botId])/Microsoft.Dynamics.CRM.PvaDeleteBot?tag=deprovisionbotondelete