Is it possible to chain commands via FormFlow? - botframework

Dialog can do almost everything according to the bot framework documentation, but it will take a lot more time to investigate than FormFlow. I failed to find a place that have lots of samples of bot framework yet. At the moment, before I spend a lot of time to try dialog, anyone know if it's possible to chain commands using FormFlow.
The work I am trying to do is to code a chain of commands:
query records
select a record from the results
actions/operations on the record
etc...
Really appreciate if anyone familiar with Bot Framework can help me on this.

Use the IDialogStack.Call method in your FormFlow handlers to call another dialog and push it on the stack.
Then use the IDialogStack.Done method to pop it off the stack. Both described here.

Related

Adding feedback to chatbot in Bot Composer

I'm creating a chatbot using Bot Composer and want to add a feedback dialog at the end of the conversation.
I was wondering how this feedback would be triggered? I've taken a look and there is a activities trigger called 'Conversation ended (EndOfConversation activity)' that I've tried out but struggling to get it working. I can't find a lot of information/documentation on the use of this trigger. Could it be used to infer the end of a conversation and then send a feedback dialog?
Has anyone managed to add a feedback dialog triggered by the end of a conversation to their chatbot using Bot Composer?
I was wondering how this feedback would be triggered?
Where do you want to trigger it? After the entire dialog has been done, or multiple places in multiple dialogs? One feedback for everything or do you need multiple?
I've taken a look and there is a activities trigger called 'Conversation ended (EndOfConversation activity)' that I've tried out but struggling to get it working. I can't find a lot of information/documentation on the use of this trigger. Could it be used to infer the end of a conversation and then send a feedback dialog?
EndOfConversation happens after everything is done. You won't be able to utilize this to trigger feedback as feedback is part of the conversation and if this event happens, then that is already done.
By default, dialogs automatically end after they complete.
"autoEndDialog": true,
You should add an action to the end (or any appropriate location) of your other dialogs to call (Begin a new dialog) the feedback dialog . You could keep track of whether certain feedback dialogs had been set and check for that value in your dialog to see if it should run again (if using a prompt, you can utilize the "alwaysPrompt" property). There is quite a bit of flexibility and it really depends on your need. But at the simplest scneario; you would make your feedback dialog, and make that the last action in your main dialog.
I hope that helped. If not, please let me know where I can clarify. Feel free to share any code/json/repo if appropriate.
This seems to be an old post but can we have some example to show how this is impleemented. I ammusing the bit framework sdk 4 and this should worked out of the box.x
Somestimes this works

Telegram Group Filtering

I've been using an open source version of Telegram called Bettergram, which claims to be the same protocols. Whether that is true or not to the side, I realized that even though Telegram does not allow pornography, there's a crap ton of it floating around. Is it possible to build a small edit into the code of bettergram (being that it is open-source) to have it block or not register chats or groups that have certain keywords within them(explicit results within group would trigger to be blocked).If this is possible, how hard is it (and can someone help me.) Thanks guys! :) link: https://github.com/bettergram/bettergram

Is it possible to get another person's UI in Google Apps Script?

In Google Apps Script when you use the property: DocumentApp.getUi(), it gets the UI of the person who is using it. If you used DocumentApp.getUi().alert(), then it would send an alert to the person who is using the script. I am wondering if there is maybe a way to alert another person's UI in Google Apps Script and not the person who is using the script. Here is a sample of my code:
DocumentApp.getActiveDocument()
.removeViewer(userName.getResponseText())
.removeEditor(userName.getResponseText());
DocumentApp.getUi()
.alert("Your access is being removed.")
Now it would be wonderful and imagine all the possibilities if that were possible! Someone please help!
It is not possible to access the UI of any browser except the one which invoked the function. This is also why time driven triggers cannot display UI modals (they are executing nonlocally).

Can aws-lex be used to build a conversation flow bot to reply with different answers based on user's input?

Can aws-lex be used to build a conversation flow bot?
For example:
Thank you very much!
Reason for all this: So we have our own "dialogue builder" and "bot-service".
Our own "Dialogue Builder": is maybe similar to Amazon Connect dialogue builder, and our own "Bot-service" is similar to Microsoft bot framework. Before we were using microsoft-luis to get "intention" of a sentence while using our own dialogue builder and our own bot-service to build a conversation/dialogues flow like if a user says "yes" then go to another flow and if a user says "no" then go to different flow (can this be done in slots?) === Binary tree :)
So now we are switching from luis to aws-lex and trying to think if it is possible to just use aws-lex UI and not our (dialogue builder/bot-service) anymore. But what I am understanding is that to use aws-lex without some kind of dialogue builder we would need to write alot of if/case statements if it contains large data, right? what is your suggestion? One way would be to just use "Amazon Connect" to utilize their dialogue builder so we don't have to write alot of if statements but then if we are using dialogue builder we can just use our own (old one) dialogue builder? what do you think?
Questions:
1)Is there a way to do something like this in aws-lex or not? I tried using slots/prompts/lambda but I am not able to go to 2nd or 3rd level depth in diagram. can be done somehow?
2) Do I have to use lambda and use "switch/if conditions each time it has to change the flow (ex: if answer is yes then reply this, and if no then reply this)?
3) If #2 is true, then is it possible for it to be used by non-developer. Even if I write if/conditions ~1k - 2k if conditions, then if a person (non-developer) tries to edit a dialogue/or-something through UI won't able to do it, right? (So does this mean that we are't really using UI of aws-lex, we are just writing "if conditions" in programming + using aws-lex "intention" to get intention, right?
4) Would it be possible to give example and show how making a flow is possible? So far using slots replies/responses don't change based on user's input. It doesn't matter if users says "no" or says "yes" it is going to reply with same path/answer. Is there a way to change reply based on user's input.
5) If #3 is not possible (non-developer) can't use aws-lex UI to make something like this, should we use custom dialogue builder which does this?
Thank you very very much!
It sounds like you're switching from the Microsoft Bot Framework to find a simpler solution to structured flows without entity recognition.
You may want research Microsoft's QnAMaker multi-turn ability. It's supported in the QnA Maker online editor, but not in the bot framework SDK (yet). They do have an example bot that uses it through the Web API.
https://learn.microsoft.com/en-us/azure/cognitive-services/qnamaker/how-to/multiturn-conversation
I realize this doesn't answer you Lex question, but might address your concern.

Oracle CRM On-Demand - Use Tasks Status to update Service Request Status

We're using CRM On-Demand for our Service Group and I'm running into an application limitation and am wondering if anyone has a workaround or just some general ideas on how to accomplish our goal.
In the application, our major focus is around the Service Request and driving for users to create Tasks for all Activities related to working towards closure. For example, a customer calls in and we need a technical resource to make a return call to diagnose the issue in detail, so a Task is assigned to that resource. Once that Task has been marked as completed, I'd like the Status to be updated. I tried creating a workflow using JoinFieldValue(), which wasn't working. I tried a more basic approach and tried to just have a field on the Service Request be populated with the Status of the Task, but that did not work either.
Upon further investigation in the Help File, there is a relationship from the Activity object to the Service Request object, but not one the other way.
So, has anyone else run into this limitation and found some other method to have a Status change on the Task update the Status of a Service Request?
(Also, I'd like to try and avoid writing a custom web service for this purpose, which is why I'm trying to use the tools in the app)
Thanks in advance for any ideas!
actually, if I well understood your issue is related on workflow cross object.
OCOD doesn't manage this type of workflow when you need to use workaround.
In order to cover a cross object worklflow you have many possibilities:
webservices as you said, but you could imagine a js code that will run WS and hosted directly into OCOD (in R19 you could hoste that in Client Side extension). That could be a good solution
Another one could be using Report with a custom look up functionnality with the usage of "Callback" function
I would prefer the 1st solution.

Resources