Stas Petrov
Stas Petrov

Reputation: 325

MS Bot framework emulator chang user id

Is there a way to change the default user id (which is 'default-user') in bot emulator?

Or maybe it supports something about multi conversations in the same time?

I want to emulate two different users at the same time (because I have multiple user types in my project.

When I try to create new conversation like this

....
var connector = new ConnectorClient(new Uri(context.Activity.ServiceUrl));
var userAccount = new ChannelAccount("//here we need to provide user id which is always default-user", "Provider");
var botAccount = context.Activity.Recipient;

var conversation = await connector.Conversations.CreateDirectConversationAsync(botAccount, userAccount);
var message = context.MakeMessage();
message.Recipient = userAccount;
message.From = botAccount;
message.Conversation = new ConversationAccount(false, conversation.Id);
await connector.Conversations.SendToConversationAsync((Activity) message);

My emulator opens new conversation in the same chat-window

Upvotes: 4

Views: 2416

Answers (4)

cwhitten
cwhitten

Reputation: 21

I work on the Bot Framework Emulator. We've recently added the ability to override generated user ids to be used in conversations without the need of a tool like Fiddler. You can utilize this feature in our latest release. I hope you find this useful for your scenario.

Upvotes: 2

romelmederos
romelmederos

Reputation: 198

On windows follow these steps:

  1. go to directory %APPDATA%\botframework-emulator\botframework-emulator

  2. locate server.json file

  3. In the sections of users replace default-user with id you need (in my case romel) "users": { "currentUserId": "default-user", "usersById": { "default-user": { "id": "romel", "name": "User" } } }

  4. restart bot emulator

Upvotes: 0

sebastian phelps
sebastian phelps

Reputation: 1

I don't know a way of having multiple conversations with different users, but you cant change the id/name of the user that is currently sending messages.

You can do this by editing the config file that the emulator uses to store its settings.

On linux I found this settings file here: ~/.config/botframework-emulator/botframework-emulator/server.json

You'll find a section "users" in that json file.

Change that section to:

"users": {
    "currentUserId": "default-user2",
    "usersById": {
      "default-user": {
        "id": "default-user",
        "name": "User"
      },
      "default-user2": {
        "id": "default-user2",
        "name": "User2"
      }
    }

You'll need to restart the emulator and then your conversation should be with User2 now instead of User.

When you want to change it back you just need to change:

"currentUserId": "default-user2",

back to

"currentUserId": "default-user",

Upvotes: 0

Artem
Artem

Reputation: 2314

Bot Framework Channel Emulator had the functions you need in the previous versions. In the latest one AFAIK changing user id and group conversation simulation are not available out of the box. However the good thing is that what this tool is doing - it is just sending http requests to your WebApi endpoint. It means that you can catch those requests using Fiddler or any other similar tool and then edit and reissue the request. It is a workaround, but for testing pusposes I think it is okay to use such an approach.

Below is the Fiddler screen and screen of debug session to show it is working:

Fiddler reissued request

Activity variable value during debug

If you want to go further and automate it - there is a REST Api documentation on botframework site, so you can build your own client.

Upvotes: 2

Related Questions