You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
get_users: GetConversationMembers or GetActivityMembers
get_messages: ???
send_message: CreateConversation, SendToConversation or ReplyToActivity
message_user: same than send_message?
advices? mostly how to get_messages?
is there a recommendation between Conversation or Activity, especially depending on Target platform? (Skype, Teams...)
The tricky parts is how the BotFramework works. Microsoft pushes a message to the MsBot object (Extended Flask Object) every time a user messages within the chat. You can store this message by using state. The examples below use JsonState but I would recommend MongodbState.
To get the user id's and also the channel / conversation ids you will probably have to use the state as well.
To send messages you will want to use SendToConversation and CreateConversation if it is the first time messaging the user. This should be the same on all of the platforms.
These are my rough notes on how I would do each.
chat.py
class Chat(object):
def connect(self):
self.state = JsonState()
# See notes below regarding these 2 lines.
self.bot = MsBot()
self.bot.run() # blocking
def get_users(self):
past_messages = self.state.get_activities()
# find the last few conversation_ids that the bot has been in
# call GetConversationMembers using the conversationids found
def get_messages(self):
past_messages = self.state.get_activities()
def send_message(self, channel, message):
# There are a few more arguments that you will have to set
# You may want/have to interrogate the past messages again as well.
SendToConversation(conversationId=channel,
text=message).send()
def message_user(self, user, message):
past_messages = self.state.get_activities()
# Find the last message from that user and get the converstaion_id
SendToConversation(conversationId=conversation_id,
text=message).send()
config.json
other:
state: JsonState
Notes on MsBot object
The MsBot object extends Flask. It creates a endpoint that the Microsoft posts to. This should really be run using gunicorn and not just MsBot.run(). You may want to create 2 applications. One using the MsBot object which you can run using gunicorn and it would write out the message logs to the state file. This would then allow you to extend the chat object and just read the state file.
Activity
mbrown1508 commentedon Aug 21, 2017
Hey Julien,
The tricky parts is how the BotFramework works. Microsoft pushes a message to the MsBot object (Extended Flask Object) every time a user messages within the chat. You can store this message by using state. The examples below use JsonState but I would recommend MongodbState.
To get the user id's and also the channel / conversation ids you will probably have to use the state as well.
To send messages you will want to use SendToConversation and CreateConversation if it is the first time messaging the user. This should be the same on all of the platforms.
These are my rough notes on how I would do each.
chat.py
config.json
Notes on MsBot object
The MsBot object extends Flask. It creates a endpoint that the Microsoft posts to. This should really be run using gunicorn and not just MsBot.run(). You may want to create 2 applications. One using the MsBot object which you can run using gunicorn and it would write out the message logs to the state file. This would then allow you to extend the chat object and just read the state file.
juju4 commentedon Aug 21, 2017
Hello @Grungnie
Thanks a lot for the detailed feedback! I'm reviewing that and hopefully do some kind of tests/poc and come back to you.