I am developing a Google Smart Home App, and I follow the official development document.
Create my project in Google Console
'gactions update --action_project action.json --project {myproject}'
Complete the necessary information,including App Information, Account Linking;
'gactions test --action_project action.json --project {myproject}'
I have tried many times, even I used the other accout, and created it. But the result was same that my smart home app still not appear in my google home.
Someone said they created their app, and it would appear in Home Control section like [test]{project_name} after 'gactions test'. But it not work for me. It is very frustrated. And This step has blocked my further work for many days.
Further more, I want to confirm the following question:
When I created my smart home app, the section is like this:
Actions added from Actions SDK
Actions: (this place is emtpy, is it normal? or lack of something like agent or else)
The Smart Home App in test mode, it is required that voice-only conversations with the Google Home speaker, or directly appear in Google Home App after 'gactions test'?
Any help will be appreciated!
My action.json: { "actions": [{ "name": "actions.devices", "deviceControl": { }, "fulfillment": { "conversationName": "automation" } }], "conversations": { "automation" : { "name": "automation", "url": "https://xxxxx" } } }
running it the first time could be a bit painful. Below is what I do to get it working.
Make sure you have filled in all details on the action console.
Click on the Test button to start your app.
From the simulator, type Talk to . It might ask you to login.
If you can see the response from your app. Then it should work on your google home.
Please note that your test app will expire if you leave it idle for too long. You need to click on the test button to run it again or your google home won't be able to lunch your app.
Also, in your action.json, if you are pointing your intend to a webhook, please make sure your webhook is accessible from google.
Related
I follow the actions on Google instruction, just have one action which is the default welcome intent.
I always get this error when I type "talk to XXX ".
Also, I tried the google smart home action example, I could see my devices on mobile assist APP - home control, but I had some error when I test on the simulator like "turn on my lights".
Anyone know what could cause this issue? Thanks!
{
"response": "We're sorry, but something went wrong. Please try again.",
"expectUserResponse": false,
"conversationToken": "",
"audioResponse": "",
"visualResponse": {
"visualElementsList": [
{
"displayText": {
"content": "Sorry, this action is not available in simulation"
}
}
],
"suggestionsList": [],
"agentLogoUrl": ""
},
"clientError": 4,
"is3pResponse": false
}
UPDATE
Hi, this issue is fixed. It is because APP activity control is turned off by the company account Administrator, even though I enabled web & App activity on my account.
When you are simulating a conversational action, are you making sure that the project is currently in a 'test draft' state? You may want to disable and re-enable testing by clicking on the testing button in the top right corner of the console.
If you are testing a smart home action, you can't make calls such as "talk to X" as there is no conversational entrypoint for a smart home action. However, after you do account linking commands like "turn on lights" should correctly send the command to your endpoint only for the currently tested action.
I have follow the documentation, and I created a pkg json like this and the simulator is not working I create this post to change the information with Google community.
https://plus.google.com/communities/105684267327487893574/stream/1dec6e34-163c-4f1a-883a-548cff52b522
The doc I sued to create the smart home is : https://developers.google.com/actions/smarthome/create-app#request
{
"actions": [{
"name": "actions.devices",
"deviceControl": {
},
"fulfillment": {
"conversationName": "automation"
}
}],
"conversations": {
"automation" :
{
"name": "automation",
"url": "My ACTION Handler Url API"
}
}
}
I configure the action
The simulator's default text is incorrect in the case of Smart Home actions. In a house you do not talk to your lights and ask them to turn off. You should just say "turn on my lights" without invoking any third-party app.
First, you need to go to the Home Control settings in the Google Assistant settings. There, you can link your Google account to the Smart Home server and SYNC your devices.
After that, you can directly control them without actually passing into a third-party conversation. The simulator does support these commands and will respond correctly once you do the account linking. However, it is different from a conversation.
I have follow this tutorial (https://devdactic.com/ionic-2-push-notifications/#disqus_thread)
I do not receive notification (status sent on ionic.io) on physical iOS Device with TestFlight. (But the token is generated).
app.component.ts and app.module.ts file: https://pastebin.com/HB97KdWL
I have try official tutorial but same problem..
Thank you in advance !
So, there are a bunch of things that could go wrong, especially with ios. Here are some things to look at:
Managing the certificates for the APNS can be rough. If you have
access to an android device, start there since it's a little more
straightforward to get notifications up and running.
Since you're using apps.ionic.io, you have the advantage of checking
to see if you have a push token assigned to a user. (I'm assuming
that you're using auth?) In the Auth tab, select the
user->View->check the push tab to see the token. Also, use the push
service to send a generic push notification to the users to see if
it arrives.
If you have a problem with ios, there's a strong likelihood that
there's something wrong with the certificates... so check for
another tutorial on that. I'd recommend using the Ionic Cloud Services website instead of Devdactics since Ionic is more in-depth. You can find it here: https://docs.ionic.io/services/push/#prerequisites
Make sure that the "Background Notifications" and "Push
Notifications are selected on the General tab in the Xcode project.
Since you're using Ionic, changing anything with 'cordova platform
add ios' can overwrite it. Make sure it looks like this: ![enter
image description here]3
This might be an oversight?...in your code, you have this:
const cloudSettings: CloudSettings = {
'core': {
'app_id': 'XXXXXX' **<-- this should be a value. (not XXXXXX)**
},
'push': {
'sender_id': 'XXXXX', **<-- this should be a value. (not XXXXXX)**
'pluginConfig': {
'ios': {
'badge': true,
'sound': true
},
'android': {
'iconColor': '#ff0000'
}
}
}
};
app_id is something that is covered in the tutorial that you sent. It's under the IOS certificate section. It says, "After going through the Push guide you need to have your App Id from the Identifier you created inside your Apple profile. Copy that ID and open your config.xml and add your ID:" This is the same ID that you'll put in that section of code.
Unfortunately, there are a lot of things that can go wrong with the certificates. I would focus there since the errors that you get can be unannounced.
I created a project for smart home app. My action package is like this:
{
"actions":
[
{
"name": "actions.devices",
"fulfillment":
{
"conversationName": "automation"
}
}
],
"conversations":
{
"automation":
{
"name": "automation",
"url": "endpoint url here"
}
}
}
As you can see, it is for smart home. But I am still asked to fill in the pronounciation for the app name in the app information. This is weird, because a smart home app doesn't need to be called like talk to Blah Blah Blah. You just need to enable it under home control > add devices. So, why do I need to fill in the pronounciation? Does this mean the action console didn't recognized it as a smart home app?
Another thing is, I don't have any actions listed under Actions added from actions sdk. Is this the normal for smart home app? The docs didn't explain that much so I really don't know what really is correct.
Yes both of these behaviors are expected. You should be able to register your devices with the Google Home app and then control them with the Assistant.
As it stands, the Actions on Google console does not give any visual special considerations for Smart Home projects, so it will still look for things like actions and pronunciation. But if you can sync your devices using the app, then you will see that your Smart Home action is recognized.
Is it possible yet to initiate a phone call? E.g. if I'm making a branch finder action a dialogue might go like:
"Hi, where's my nearest store?"
"Your nearest store is our Oxford Street branch, at 300 Oxford St, Marylebone."
"Call it"
"Sure"
It then initiates a call to the store, like an Android app using an ACTION_DIAL intent.
I would think something like this should be possible, especially considering the current devices supporting Assistant are phones and Google Home, both of which can make calls (I guess future devices with assistant built in might not, but then there can be a check like app.phoneCapabilities). I've tried using .addSuggestionLink with a tel: address with no luck.
I actually made a dodgy work around for this, if anyone comes back to this and is interested.
You can suggest a webpage URL, which can be a page which has a tel: link from there. Either using server side work or just simple JavaScript (mine uses simple JavaScript), you can update the link.
My link is below - feel free to use it, I use it in my app. It's pretty basic, the documentation is in the comments:
https://domdomegg.github.io/linkgenerator?href=tel%3A%2B442070313000&bgcolor=607d8b&buttontext=Click%20to%20call%20Google
For starters, the Google Home cannot (yet) make calls. That feature was announced at I/O and will be rolling out later this year. It is not yet known if there will be API access to that feature when it does roll out. (There is certainly potential for abuse of the feature, although there are some ways that can mitigate that abuse.)
I haven't tested, but I'm a little surprised that the tel: url form didn't work since I thought that would just launch an intent on Android (tho I don't know how iOS would handle it) and tel: goes to the dialer intent.
You can show a call button which will redirect to the specified number on the dialer app.
Here's a way to do that from fulfillment response:
"buttons": [
{
"title": "Call",
"openUrlAction": {
"url": "tel:+91123456789",
"androidApp": {
"packageName": "com.android.phone"
},
"versions": []
}
}
]
Add this JSON to your response and it will show a button which will redirect to default call app and shows +91123456789 number filled.
EXTRA
Similarly, if you want to send mail then you can add:
{
"title": "Send Mail to Jay",
"openUrlAction": {
"url": "mailto:Jp9573#gmail.com",
"androidApp": {
"packageName": "android.intent.extra.EMAIL"
},
"versions": []
}
}