How to clone/make another copy of an deployed bot on Azure? - azure

I want to create a copy of an existing bot deployed on Azure. So, that the new copy can be used to create a new bot with minor changes.
Wanted to know if there is any direct option on Azure portal itself to create the clone of the existing bot

You could use the Export Template functionality to export the existing bot and any other associated resources from Azure, then use the Template deployment function to deploy your custom template.

As the bot channels registration isn't currently supported for template export (as you have found), the best option might be to script something. You can build a bot and have it zipped up and then use cli/powershell to create the needed resources and have it deployed. You can script creating new apps and bot channel resources fairly easy.
See here for more info on how to generally go about that. Let me know if you want a sudo sample.

Related

UiPath Apps deployment and migration to another tenant

Our platform is UiPath Cloud Orchestrator with DEV/Test/Prod tenants. The Robots are hosted on Azure Windows instances for DEV / Test / Prod.
I created an UiPath App to upload an Excel file, store it in a storage bucket, then start a unattended process to read the excel file.
The UiPath app points and binds to the storage bucket and process in the DEV tenant.
I would like to deploy and migrate the UiPath app to point to the Test Tenant. It seems like that to point to Test, I have to change the app in the app studio to switch the pointers/bindings for the process and storage bucket and replace them and change or confirm the UI elements are correct.
Does anyone know if there is a better way to do migrate the app to another tenant for the UiPath apps?
It does not seem right to have to change the pointers this way. It only just allows us to point to one tenant at a time so hard to really have DEV/Test/Prod instances of the Uipath app without having copies of the app for each tenant.
I can export the app (.uiapp file) and import the file across Cloud platforms but not across the tenants without changing the name of the app. The .uiapp file seems to be a json format with the bindings in the file with specific ids etc. Changing the pointers and bindings here would be error prone as well.
I have looked through the documentation, the uipath academy training and the forums which do not provide an answer.
Appreciate the insight!
As your using the Azure Host, I'm assuming that you might be using the Azure DevOps for your packaging and publishing.
Have a look at the package below:
https://marketplace.visualstudio.com/items?itemName=uipath.vsts-uipath-package
You can set the Tenancy level so that it's packaged for that specific tenant, can create any assets etc.

Using terraform how can I create one service account used across multiple project?

I am currently trying to use a service account that is already created in one project and use it again in a different project. I do not want to create a new service account in the new project I want to use the already existing service account. I am clueless on how to go about implementing this.
You can use data terraform. But I think u need grant permisions or roles for the new project in this sa.

Inability to deploy the WEB Api using Visual Studio

I have created a web API, and now I want to deploy it. Unfortunately, when I try to publish my web API, I need to sign in or create a new account on the App Service step.problematic step
When I try to log in or even create a new account - it accepts it but doesn't allow me to go further and open the App Service settings like this: enter image description here
In my case, it was because I didn't activate any subscription. But in my opinion, instead of just not allowing me to deploy my WEB API, they could also specify the cause.

Link a dialogflow agent to a Google Cloud Console project and inherit all the team members i assigned to the project?

How can i create a dialogflow agent and associate it with the Google Cloud Console project i created and have it inherit all the team members i assigned to the project ?
I am working on a dialogflow project. I created a new project in the Google Cloud Console and added some team members. However when i switch to the dialogflow console i do not see my project and the people i added to it. when i create a new agent in dialogflow it seems to have nothing to do with the project i created in the cloud console and i have to explicitly share the agent with the team. So the Google Cloud Console project is sort of useless.
For example in Azure cognitive services i can link everything to my root project.
Best CK
Google could do better in making these resources (e.g. Projects) more clear.
Actually (to my knowledge) all Google Projects represent the same underlying project resource and you can e.g. view DialogFlow projects from Google Cloud Console and vice versa.
I suspect (!) that you created 2 different projects: one using (Google Cloud Platform) Console and one using DialogFlow Console
If you have the Cloud SDK (aka gcloud) installed, you should be able to list all your projects (Cloud, DialogFlow etc.) using:
gcloud projects list
Now, to answer your question. Users of Google (!) Projects are Google accounts users and groups and also include service accounts. You may list the users for a given project with:
gcloud projects get-iam-policy ${PROJECT}
Ideally, what you want to do is ensure that this policy is reflected across both projects. I'm reluctant to provide a script because service accounts complicate this sharing. Service accounts work across projects but they are created automatically in projects. A simple copy-and-paste of accounts may break something for you.
That said, here's a gcloud command to enumerate the list of ${ROLE} (roles/owner) from one project ${SRC}:
PSRC=...
ROLE="roles/owner"
MEMBERS=$(gcloud projects get-iam-policy ${PSRC} \
--flatten=bindings \
--filter=bindings.role:${ROLE} \
--format="value(bindings.members)") && echo ${MEMBERS}
NB There's probably a way to split user:some#email.com if you need to
You could then iterate over this list and add (!) these accounts to ${PDST}
for MEMBER in ${MEMBERS}
do
gcloud projects add-iam-policy-binding ${DST} \
--member=${MEMBER} \
--role=${ROLE}
done
Lastly, when you create a DialogFlow project you are provided with the option to use an existing Google (Cloud) Project. Next time, you follow this flow, please look for the "create new or use existing project" prompt. You would be able to select the Project you'd created previously to reuse your users.

Fully automating Microsoft bot framework deployment using ARM (App settings get removed and functionality is missing)

I'm currently working on a challenge where I'd like to fully automate the deployment of a Bot Framework application.
Currently we've set it all up to correctly fill the resource group in Azure with:
1. The Bot
2. The AppService handling requests from the Bot
3. An application that uses the DirectLineChannel to forward the conversation from an Amazon Alexa client
All these application need some manual steps to be fully setup though:
The Bot
a. Create Skype Channel
b. Create a Direct Line Channel and copy the DirectLineSecret to be used later
c. Setting up OAuth for the bot
The App Service for the Direct Line Channel
a. Create a new AppSetting named DirectLineSecret and paste the earlier copied value in here
Part one can be done once so it doesn't have to be done every time, but the second step always needs to be done as the AppSettings get removed by the ARM template every deployment.
An easy solution would be to just include the values inside the parameter file for ARM but that would make my source code dependent on what environments it will deploy to. A second option would be to create a PowerShell script to fill in the AppSettings after the deployment but that would still need to somehow find out what the DirectLineSecret is and then create an AppSetting for it.
Does anyone have any other suggestions regarding this? (Ideally where my code wouldn't have to be changed whenever I want to deploy to a new environment).
ARM Templates declare a "state" or end goal for a resource. So if you declare "no app settings" in the template that's what you'll get. Declarative is a bit of a mindset change.
If you need different settings for different environments then you would use parameters to replace that things that need to change from one env to the next. Assuming you're automated, that automation pipeline is likely aware of the env it's deploying to and can set the parameters values accordingly.
That help?

Resources