ALEXA Amazon Echo, SKILL - api

Is there an API that we can use to invoke the invocation name and execute an intention.
This is what I want to do is send an alert to Alexa and she speaks without having said the invocation name
Thank you, :)

Depends on your use case. There is a Reminders API that might meet your needs. It can provide a reminder to a customer at a later time after a session has ended, but it needs to be set with the customer's approval. So your customer would have to invoke the skill and approve setting the reminder, but then the reminder could occur at a later time.
https://developer.amazon.com/en-US/docs/alexa/smapi/alexa-reminders-api-reference.html
For example, I've played a game that only lets you take a specific action every 90 minutes. In the game, it asks if you want to set a reminder for 90 minutes later. Ninety minutes later, whether you're playing the game or not, Alexa provides the reminder.

No, there is no API like that. If you want your Alexa to speak, you have to start the conversation with voice. It's by design.
However you can try build a small device/mobile app with endpoint that could play the recorded voice ("Alexa, open my skill") and play it near Alexa.
Also you can try Skill Invocation API - you will receive Alexa's response in JSON - in my opinion it's good enough for tests (since you are not testing how Alexa pronounce words in response).
Or Skill Simulation API.

Related

Getting started creating a web form in Microsoft Teams

I dont know where to begin. Do I need to create an app? Do I need to use bots? I have tried finding docs online but don't know where to start. Any help with be appreciated.
I am trying to create a small form in a teams channel that my users will fill out.
User enters #projects
Web server responds with
User clicks submit and data gets posted to my web server.
You're correct that there are a few different kinds of applications in Teams, so finding the one that suits your needs can be a little confusing at first. For what you're trying to do, I would recommend a Bot, and when it received a message (which it will do when it receives your #mention), it can respond with an Adaptive Cards. Adaptive Cards, if you've not used them, are like small embedded forms inside the chat. The user can complete the card and click a button, and it will send the payload back to your bot to do whatever it needs.
Bots, incidentally, are basically just web services, so your bot can do whatever it needs once it received the payload, such as calling another API in turn.
You haven't mentioned what language you might want to work in, but here are some good starting point nevertheless:
https://dev.botframework.com/
https://github.com/microsoft/BotBuilder-Samples/tree/main/samples
https://github.com/microsoft/BotBuilder-Samples/tree/main/samples/csharp_dotnetcore/57.teams-conversation-bot (I've linked the C# version - you should know that Teams bots use the same Microsoft framework as -all- bots build for the Microsoft world, such as web chat bot or a Skype bot. As a result, you have to ensure that anything you look at is applicable to Teams as some content/samples are not)
https://adaptivecards.io/ (as with Bots, Adaptive Cards have a life outside of Teams, so some articles/content/etc. might not be applicable to your scenario)

Daily scheduled notifications

I need a bit of guidance, so for my application i'm looking at using local notifications to send a notification every morning at 7 o'clock.
The issue i'm having is how can i make the content for the local notification dynamic mainly the body and the attached image? As it will vary for the user on a daily basis.
What would be the best way to go about this since you can't edit future notifications.
Here's a little lesson about notifications. First, what is a notification? It's basically an alert presented on your behalf by the system. Second, there are two kinds of notification: local and remote.
Let's imagine, then, an app that aims to present a notification to the user every morning at 7 AM saying what the current temperature is outside. (Assume for purposes of the example that we have a way of learning this information.)
A moment's thought will reveal that this cannot be done with local notifications. We cannot know the current temperature at 7 AM until 7 AM (or close to it) and we cannot schedule the notification unless the app is running. Therefore we would need the great good luck to have the app running at 6:59 AM in order for this app to work. But an app only runs when the user summons it, so that is extremely unlikely.
Therefore a task of this kind is possible only with remote notifications. A remote server is always running; therefore it can get the temperature and "ping" the user's device at 7 AM, and the system will present the notification on your behalf. You would therefore need to possess such a server in order to write the imagined app.
(An alternative using local notifications would be this: You schedule, say, a week's worth of local notification in advance. Then if you have the great good luck to find the app running before a notification is presented, you tear down all the scheduled notifications and do it again with a more up-to-date forecast. But of course this cannot possibly work as well as using remote notifications, and it will stop working entirely after a week if the user doesn't launch the app. That, to put it bluntly, sounds pretty lame.)

After I've built a conversation flow in a chatbot, how'd I get the chatbot to actually perform the desired actions?

For example, if I’ve built a full conversational flow in a service like API. AI that results in a booking being made. How do I actually then make that booking sync to a third party calendar?
Can this be done directly between the two? Would I need to build an application to sit between the two?
I’m tech inexperienced, so I’m curious how these things work…
You will need to add "fulfillment" to your API.AI app, and yes, have a custom application (the "webhook") in between.
That is, once you've collected all the information to make that booking, you don't want to just say "Thank you, here's the book information you've provided [...]", you want to do things with it. That's what fulfillment does. API.AI will send a REST call to your webhook with the information the intent has, you do whatever you want with it (e.g.: actually add the booking to the calendar), and also return the response that you want API.AI to give, that'll take the place of the "text response" you normally provide for a given intent.
To set this up on the API.AI side, there are two steps: Find "fulfillment" in the menu for your app, and tell it how to connect to your webhook. Then go to any intent where you want the webhook to be called when it's matched, and select "use webhook" under "fulfillment".
The more involved part may be to actually provide a webhook that API.AI can call - that's where your custom logic goes, it sits between, in your example, the API.AI app and the calendar application and makes things actually happen.
Useful reading: https://docs.api.ai/docs/webhook

Play framework, limit an action to be done once

I have a button follow on my website, you can toggle it on or off as much as you want.
Each time it sends a notification mail to the followed people. I don't want him to be spammed.
So I want Play Framework not to send this mail twice (twice in a day, for example)
Is there any built-in mechanism or any library of play framework to do it?
Thanks !
EDIT :
Preferably an external service, like Mailjet or mailchimp.
Just save notification to DB instead of sending it immediately - so user can decide how often he want's to get it.
Next use Akka scheduler for sending many notifications in single emails from time to time.

Testing SMS code without access to a texting plan

Is there any way to test SMS messaging without having a texting plan?
There isn't any way to setup the equivalent of a mock email server for the purposes of testing an SMS service is there? Are there any other ways to accomplish the task? Perhaps setting up something like a GrandCentral account that can receive text messages?
I am looking to test SMS messages to multiple accounts without having to find multiple people with texting plans and coordinating the effort.
Google now has the answer for which I seek. With the roll-out of their new Google Voice (previously GrandCentral) they added the ability to received text messages to the phone number (which currently is free). While technically somewhat of a text plan, one could theoretically sign up for a few accounts and be able to test multiple phone numbers.
http://www.google.com/voice/
Update (Nov 2010):
Perhaps an even better way to do this now is to use either Tropo (tropo.com) or Twilio (twilio.com). Both of them offer low cost SMS messaging and Tropo is free for development. I've been using Tropo and it's very quick and easy to setup and write and code for.
It would depend on the method of how you're sending out the SMS messages. If you're using the email method (<ten digit number>#<cell provider's doman>) you can fake it with a regular email account that can be purged automatically. If you're using an actual SMS publisher your best bet would be to refactor the design so that you can test that your function gets called the expected number of times, but doesn't actually send the messages. Then when you want to test the production-ready code you actually round up a group of people and try it out.
Having a provider that doesn't charge for incoming text messaging (like US Cellular) comes in handy for situations like that.
SMS text can be done under a few different protocols. I've had success with SMPP using the Easy SMPP .NET library and this java-based SMPP server simulator. It saved me a bunch of overpriced service charges.
you can send email to their phone:
18005551212#txt.att.net (IIRC)