Update a published Action on Google - firebase

Recently, I built an Action on Google and followed the official docs. I built it and pushed it for review. The google team deployed it after reviewing it as well. Now I wanted to add some new functionalities to the existing Action. However, I am faced a slight issue in doing so.
I used DialogFlow to create the agent and Firebase functions as my webhook fulfillment. Now the changes made to the agent are in draft of new version and does not affect the live version, but changing the firebase function affects my live action as the firebase function gets deployed on same URL. I also received an e-mail stating that health of my action is critical as the webhook was not replying to requests properly (As i was making some changes).
To solve this, I created another firebase function and added my all old and new functionalities to this new function and updated it as the webhook fulfillment of my same DialogFlow agent which is in draft now. After satisfactory testing, I published the same agent again and it got successfully deployed.
My question here is that, is there any other mechanism to update a published action other than creating new firebase functions ? As In alexa skill development two instance of a skills get created when a skill goes live : Live and Development. Changes in development mode (both the interaction model and backend code deployment) does not affect the live skill.

Dialogflow has a versioning and environment system which enables you to setup a "beta" track of your action with its own fulfillment while you prototype.

Related

How to Fix Permission Issues in Firebase Cloud Functions (Nextjs Experimental Hosting)

I have an issue related to Firestore, Hosting, and Cloud functions. I deployed a Nextjs application using the just-released experimental web framework support. I'm using Nextjs's Image API, and as expected, the Firebase CLI creates a cloud function for the project. Everything works fine at the start, but when I try to open a page in the application that reads some data from Firestore, it redirects to an auth page, which is unexpected.
Even when I auth with my Google account (since that's the logged-in user to the application), it returns a forbidden error and logs me out.
When I go back and try again, it returns a different error (most likely because I was logged out automatically).
I tried doing some research, and some people suggested adding an allUsers principal permission to Cloud functions, but that didn't work (Error: Principals of type allUsers and allAuthenticatedUsers cannot be added to this resource), and that's even insecure permission. Only authenticated users should be able to read data from the page as already configured in my Firestore security rules. So it's unclear what I need to do since Firebase created the Cloud function automatically or if this is related to my security rules and cloud functions.
What could be wrong? Everything works fine in my existing deployment setup to Netlify (where Edge functions are created automatically using their Nextjs plugin). I'm only trying to test the new Firebase web framework hosting features. Please let me know if you'd need me to provide some more context or debug files to better help you help me.
Thank you!
The message “ App requesting permission to access your google account “ pops up if the function runs in any region other than us-central1.
Currently, Firebase Hosting does not support Cloud Functions in any other regions, Except us-central1.
You can refer to this StackOverflow thread.

Firebase Remote Config & A/B Testing with real time updates

I've implemented real time remote config updates via the documentation here.
In general, it works as expected, except when it comes to experiments via A/B Testing. Changes to A/B Testing that affect remote config do not fire the update cloud function hook.
Does anyone know if its possible to have the functions.remoteConfig.onUpdate cloud function hook trigger when a change to remote config is made via an A/B Testing experiment change?
The only workaround I can think of is to have a dummy value in remote config itself that I change whenever an experiment is created/updated.
firebaser here
There is nothing built into Remote Config for that at the moment. But thanks to the integration between Cloud Functions and Remote Config, you can build it yourself.
One of our engineers actually just gave a demo for this last week. I recommend you check it out here: https://youtu.be/lIzQJC21uus?t=3351.
In this demo, there are a few steps:
You publish a change from the Remote Config console.
This change triggers Cloud Functions through a functions.remoteConfig.onUpdate event.
The Cloud Function sends an FCM message to all apps through a topic.
When an app receives this message, it shows a prompt that the configuration is out of date.
When the user clicks the "fetch" button, the app fetches the new configuration data from Remote Config.

HTTP endpoints was either down or not responding

I made an action for Google Assistant using dialogue flow. When submitting the Action for production it's Getting denied.
The Webhook is on Firebase Function, the logs are empty. I re-submitted version 2 with changing the endpoint. Everything work when I test in the Simulator or my phone.
Do the Firebase function work only in particular region and not globally? If so there is no option to select the region
UPDATE
I did the deployment of Alpha as Nick suggested in the comments, It's failing in my all alpha testers too. Did I do something wrong in the configuration of the webhook or in the dialog flow code?
Here is my index.js
https://github.com/Aarth-Tandel/CountryName

Fulfillment URL is not valid in Dialogflow | Using Cloud Functions

I was using Dialogflow API V1 until now and everything was working fine. It seems like the Dialogflow API V2 is now the default. I am not sure if this is the reason but I am not able to deploy cloud functions anymore.
In the fulfillment tab, it is not letting me enabled the cloud function toggle. Every time I try to enable and click deploy it gives me the following error:
Fulfillment URL is not valid
It's weird because I am not using fulfillment URL and still I am getting this error.
One workaround that worked for me when. I wanted to create a back up bot for my existing LIVE bot to use it for testing. I was getting the same issue once I restored my zip and after that try to edit the stock fulfillment.
What worked for me was, I edited the fulfillment first .index.js and package.json both after which I restored the bot using zip folder that added intents and entities to the agent. after which I was able to deploy cloud functions without getting the error.

implement push notification in firebase with batch

I am trying to make firebase and batch work together so that I can fire push notification when something in firebase db got changed. I followed this tutorial and now i want to make them work automatically and for that i contacted with batch's and they replied me
write your own server-side code to 1. detect Firebase db changes 2. call the Batch API.
For "detect Firebase db changes" I have to create a server-side code which will track changes and call batch's api accordingly. Then follow this documentation for attaching the changed content and send it to appropriate user.
I don't know how to create the server side code. Anyone can give me a quick instructions on it or there's any tutorial related to this?
To write server-side Firebase code you can use the node.js SDK. See https://www.firebase.com/docs/web/quickstart.html (search the page for node.js).
The API is exactly the same as the regular web API except that you'll be writing it as a node.js application that can be run on the server. You can then integrate this with Batch's API.

Resources