• 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.

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

 

This topic is now closed to further replies.