• 0

Microsoft Teams: Create a new message in a channel


Question

So I am working on setting up a new (private) bot for Microsoft Teams that should be able to post messages in a channel on-demand. I already have a bot coded for Google Hangouts Chat, but Microsoft Teams is giving me a really hard time.

I've been searching for over 10 hours now all over the web, and I am very confused.

 

Right now, all I want to do is post cards to a Microsoft Teams Channel. So I created the connectorclient, I used the baseuri provided when the bot joined the channel (Starts with smba.trafficmanager.net) with my MSAppID and MSAppPassword. Then, I fill in as much information as I can (Maybe too much?) and I submit the information using the connector's .conversations.createconversation.

 

Namespaces used: Microsoft.bot.connector, Microsoft.bot.connector.teams.models

 

Here's the code:

 

 Dim Connector As New ConnectorClient(New Uri("https://smba.trafficmanager.net/amer/"), "MSAPPID", "MSAPPPASSWORD")


        Dim conversation As New ConversationParameters
        Dim activity2 = Activity.CreateMessageActivity
        Dim bot As New ChannelAccount
        bot.Id = "BOTID"
        bot.Name = "EDD Bot Test"


        conversation.Bot = bot
        Dim chaninfo As New ChannelInfo
        chaninfo.Id = "CHANID"
        chaninfo.Name = "General"
        Dim teaminfo As New TeamInfo
        teaminfo.Id = "TEAMID"
        teaminfo.Name = "EDD"
        activity2.Text = "Test"
        activity2.ServiceUrl = "https://smba.trafficmanager.net/amer/"
        activity2.Type = ActivityTypes.Message
        activity2.From = bot
        activity2.ChannelId = "msteams"
        Dim tenantdata As New TenantInfo
        tenantdata.Id = "TENANTID"
        Dim teamschanneldata As New TeamsChannelData
        teamschanneldata.Channel = chaninfo
        teamschanneldata.Team = teaminfo
        teamschanneldata.Tenant = tenantdata
        activity2.ChannelData = teamschanneldata



        conversation.Activity = activity2
        Response.Write(JsonConvert.SerializeObject(conversation))
        Try

            Dim reqresp As ConversationResourceResponse = Connector.Conversations.CreateConversation(conversation)
            Response.Write("ActivityID: " & reqresp.ActivityId & ", ServiceURL: " & reqresp.ServiceUrl & ", ID: " & reqresp.ServiceUrl)
        Catch ex As ErrorResponseException
            Response.Write(ex.Response.Content & " " & ex.Response.ReasonPhrase)
        End Try

This is what the API returns:

 

{"message":"Authorization has been denied for this request."} Unauthorized

 

Keep in mind, I'm not even 100% sure I'm using the right method to create the channel message, I figured it was either CreateConversation or ReplyToActivity.

I gave the app Users.ReadWriteAll permissions too, so am I missing something? That error leads me to think it doesn't have anything to do with the ConversationParameters payload but something to do with authentication.

 

Thank you.

Link to comment
Share on other sites

1 answer to this question

Recommended Posts

  • 1

This was fixed btw. It seems I needed to added a trust for the serviceurl.

 

Or my service url.

 

Truth be told, to hell with the specifics. It works.

 

The command that helped, to be added before the connector:

 

            MicrosoftAppCredentials.TrustServiceUrl

 

Link to comment
Share on other sites

This topic is now closed to further replies.