Is it possible to create a Cortana skill that is available only within a single enterprise? - cortana-skills-kit

Is it possible to create a Cortana skill that is limited to users on a particular company's network?
For example, I would be interested in building a Cortana skill for the Harman Kardon Invoke smart speaker, but this skill would not be published globally.
Are all skills always published globally or is there a way to control this?

Currently this isn't possible as a built in functionality for Cortana. There are some ways to deploy to only certain email addresses however. You can use the "deploy to group" functionality outlined here:
https://learn.microsoft.com/en-us/cortana/skills/publish-skill
Alternatively, you can publish the skill "to world" and force users to authenticate the first time they access the skill, thus limiting it to people with your approved credentials.

Related

How can a single skill be linked for multiple objects created in AWS IoT independently?

I'm developing a hardware that obeys voice commands from an Alexa skill.
The skill is associated with a lambda function that has the name of the AWS iot object and the endpoint of the skill.
Everything works very well.
But when I want to distribute my skill, it will obviously only work for my hardware.
I want to build multiple devices, that means creating multiple objects in AWS iot.
My question when the user downloads the Skill, how can it be configured so that he can enter the name of the object, of the hardware that the user has purchased.
So far the most absurd and crappy solution I can think of is to create a skill for each of the devices.
Any suggestions or comments?
The best way to do this is through the smart home skill API. The pattern it defines decouples the skill logic with the logic to control individual devices. This makes your system more complicated, but as you've pointed out any solution using a single skill lambda is going to be pretty "crappy."
This documentation article explains how to use the smart home skill API better than I could.
https://developer.amazon.com/en-US/docs/alexa/smarthome/understand-the-smart-home-skill-api.html

Q: Alexa Skill. Can an alexa skill bind with multiple lambda functions? [duplicate]

I'm developing a hardware that obeys voice commands from an Alexa skill.
The skill is associated with a lambda function that has the name of the AWS iot object and the endpoint of the skill.
Everything works very well.
But when I want to distribute my skill, it will obviously only work for my hardware.
I want to build multiple devices, that means creating multiple objects in AWS iot.
My question when the user downloads the Skill, how can it be configured so that he can enter the name of the object, of the hardware that the user has purchased.
So far the most absurd and crappy solution I can think of is to create a skill for each of the devices.
Any suggestions or comments?
The best way to do this is through the smart home skill API. The pattern it defines decouples the skill logic with the logic to control individual devices. This makes your system more complicated, but as you've pointed out any solution using a single skill lambda is going to be pretty "crappy."
This documentation article explains how to use the smart home skill API better than I could.
https://developer.amazon.com/en-US/docs/alexa/smarthome/understand-the-smart-home-skill-api.html

Building and installing a Teams bot app for on-premises softwares

I am quite new to Teams and to building bots for it.
Using NodeJS, I built a simple prototype one that can receive notifications and send requests to my software.
However, my software is installed on-premises, which means all users using it have a different domain name for it (xxx.com, abc.com…). To be able to use it, the app needs to know what is the endpoint of the requests.
I wonder how I can build my bot app in those conditions and have it in the Teams Marketplace.
My question is :
I assume I want a team admin to set the domain name in some app settings before installing it for a team and users to use.
Is that possible somehow? Is it even possible to build such an bot app?
I suppose it is possible to achieve that by having the users install a custom app, but then the app cannot be in the Marketplace.
I also suppose I can ask individual users to first enter the name of the domain, it sounds repetitive and the info would then be stored in some userData.
Isn't there some teamData instead? Could it mean having one user set those information and have them stored for everyone?

How to host BF Skills in Teams App Store?

We have a bunch of Microsoft BF Bot Skills that we are using with our Virtual Assistants. Not all skills are applicable to all our users. Teams being our collaboration platform, I was thinking if we could host these skills in our Teams enterprise app store and then let our users dynamically add them to the VA as needed. Is this even possible? Has anyone tried something like this?
Unfortunately, I don't believe this would work as they are currently designed. The relationship from bot:skill is managed, primarily, by the bot via AppId's, keys, endpoints, etc., shared between the two. The issue is each skill uploaded into Teams would require it's own manifest whereas normally only one is promoted, the primary bot. By each skill having its own manifest, Teams is going to treat it as an individual app. I believe this would interfere with the bot and skill properly connecting.
That being said, you could forgo the current bot:skill design and create smaller independent bots. By using proactive messages, it is perfectly feasible to send messages between bots. As a user interacts with the HR bot and answers some question about payroll, that message is forwarded as a proactive message to the Payroll bot which does stuff and then returns a message back to the HR bot and, subsequently, to the user.
Hope of help!

Chatbot handoff from Messenger to Zendesk

I am developing a customer service chatbot, using Azure's Bot Framework in .NET, using the the Messenger channel. I wanted to know if anyone knows what the best way to handle the handoff to a human on Zendesk (which my platform already uses as its CRM platform). I'm not looking for when to do the handoff, but how to manage what happens next.
What I would love to be able to do would be that so when handoff is needed, a ticket on Zendesk would be created, sending for example a file (the transcript of the conversation so far). Then the agent would be able to solve the customer's problem in that ticket, having a conversation with him, having the bot sending messages back and forth between zendesk and messenger.
I don't know if this has been done before, or if it's at all possible. And I'm free to other solutions to the problem of handling this kind of handoff, without having to create a separate "chat" for the customer service agents to use, like it's explained on the azure documentation.
Thank you for your patience while I researched this. I found this resource that I believe will meet your needs. This functionality is built off of the Bot Framework utilizing .NET (it's also available for Nodejs). There are two available methods to connect a client to an agent.
The first (which should apply to you) aggregates different channels into one allowing an agent to pickup in the same channel where the bot handed off. The second opens a new channel when an agent joins the conversation.
Intermediator Bot
I was able to spin up a bot using this and confirmed the bot was listening for outside traffic.
Hope this helps.
Steve.
One thing that I'm about to try is this:
Bot conversation ends.
Bot service calls an Azure Function, passing the conversation content.
The Azure Function integrates with Trello API, creating an entry on a Kanban board.
So, instead of Trello as I want to do, you can make a call to the Zendesk API.
I'm writing a few articles about developing Azure bots. The next two actually are dealing with these very things. You can find out more here. sign up if you'd like to get notified over the next week or so when the new tutorials are online.
Hope that helps!
Tim

Resources