This document provides an overview of developing apps for Microsoft Teams. It discusses setting up a development environment, creating a manifest file, hosting code on a website, and using App Studio. It also covers different app types like tabs, bots, connectors, and extensions. The document demonstrates tabs, bots, connectors, and call functionality. It provides tips like creating an afterbuild task and notes additional permissions needed for calls.
29. Connectors
Post activity to a channel
• Text
• Card
• Actionable messages
Incoming webhook
Posting a JSON to an HTTP endpoint
30. Actionable messages
• Get notified of activity but also act on this
activity
• Removes the need of extra steps like
switching application
Create an actionable message:
http://messagecardplayground.azurewebsites.net/
33. Message extensions
• Integrate your app directly in a
chat
• Get information from your app
and post that information
• Uses the bot framework
34. • 5 seconds to respond
• Default query possible (initialrun = true)
• Recently viewed items
• Favorites
• Every request has information about the user
40. Activity feed integrations
• Uses the bot framework api
• Flag specific messages to appear in the activity
feed
• Use deep linking to navigate the user to content
• You can create a notification only bot
43. Outgoing Webhooks
(custom bots)
• Easy way to extend teams without the
need of building a full bot
• Listens to @mentions
• First authenticate the caller
44. Outgoing webhooks
limitations
• Outgoing webhooks do not have access
to non-messaging APIs, such as team
roster membership.
• Outgoing webhooks cannot post into
channels proactively.
• Although outgoing webhooks can use
cards, they cannot use button actions
like imBack or invoke.
51. Call types
• A user may initiate a peer-to-peer call with your bot or
invite your bot into an existing multiparty call (although
the latter is not yet enabled in the Microsoft Teams UI).
• No Microsoft Graph permissions are necessary for a user
to initiate a call with your bot for a peer-to-peer call, but
additional permissions are needed for your bot to
participate in a multiparty call, or for your bot to initiate a
peer-to-peer call with a user.
• A call may start as peer-to-peer and escalate to
multiparty. Your bot can initiate this escalation by inviting
others provided your bot has the proper permissions, but
if your bot does not have permissions to participate in
group calls, if one participant adds another person, your
bot is dropped from the call.
53. Calls and
meetings
• 2 types of meetings:
• Ad-hoc
• Scheduled
For a bot this is not true: A meeting is just a (multiparty)
call with additional metadata such as: chatId, joinUrl,
startTime, endTime,…
54. ngrok
• Setup an account and get an auth token
• Run ngrok authtoken <yourtoken>
• Update file with
• tunnels:
• signaling: addr: 12345
• proto: http
• host-header: localhost:3979
• media:
• addr: 8445
• proto: tcp
!!Python style
55. Add additional permissions for the AAD app
Permission Display String Description Admin Consent Required
Calls.Initiate.All Initiate outgoing 1:1 calls from the app
(preview)
Allows the app to place outbound calls to a single user and transfer
calls to users in your organization’s directory, without a signed-in
user.
Yes
Calls.InitiateGroupCall.All Initiate outgoing group calls from the app
(preview)
Allows the app to place outbound calls to multiple users and add
participants to meetings in your organization, without a signed-in
user.
Yes
Calls.JoinGroupCall.All Join Group Calls and Meetings as an app
(preview)
Allows the app to join group calls and scheduled meetings in your
organization, without a signed-in user. The app will be joined with the
privileges of a directory user to meetings in your tenant.
Yes
Calls.JoinGroupCallasGuest.All Join Group Calls and Meetings as a guest
(preview)
Allows the app to anonymously join group calls and scheduled
meetings in your organization, without a signed-in user. The app will
be joined as a guest to meetings in your tenant.
Yes
Calls.AccessMedia.All Access media streams in a call as an app
(preview)
Allows the app to get direct access to media streams in a call, without
a signed-in user.
Yes