Teams のワークフローへのディープ リンク
新しいチャットの作成、スケジュール 設定ダイアログの開き、音声ビデオ通話への移動など、Teams で特定のタスクを実行するためのディープ リンクを作成できます。
この記事では、ディープ リンクを作成する方法について説明します。
新しいチャットを開始するためのディープ リンク
アプリケーションは、ユーザーの一覧で新しいチャットを開始し、次の形式を使用してチャット名や下書きメッセージなどの追加情報を提供できます。
https://teams.microsoft.com/l/chat/0/0?users=<user1>,<user2>,...&topicName=<chat name>&message=<precanned text>
例: https://teams.microsoft.com/l/chat/0/0?users=joe@contoso.com,bob@contoso.com&topicName=Prep%20For%20Meeting%20Tomorrow&message=Hi%20folks%2C%20kicking%20off%20a%20chat%20about%20our%20meeting%20tomorrow
クエリ パラメーターは次のとおりです。
-
users
: チャットの参加者を表すユーザー ID のコンマで区切られたリスト。 アクションを実行するユーザーは、常に参加者として含まれます。 ユーザー ID フィールドは、電子メール アドレスのみなど、UserPrincipalName Microsoft Entraをサポートします。 -
topicName
: チャットに 3 人以上のユーザーが存在する場合は、チャットの表示名の省略可能なフィールド。 このフィールドが指定されていない場合、チャットの表示名は参加者の名前に基づいています。 -
message
: チャットがドラフト状態のときに現在のユーザーの作成ボックスに挿入するメッセージ テキストのオプションのフィールド。
ボットでこのディープ リンクを使用するには、カードのボタンの URL ターゲットとしてディープ リンクを指定するか、openUrl
アクションの種類を使用してアクションをタップします。 アプリでは、Teams JavaScript クライアント ライブラリ (TeamsJS) v.2.0 以降を使用して、ディープ リンクを手動で準備することなく作成することもできます。 次の例では、TeamsJS を使用して、チャット機能がサポートされているかどうかをチェックします。
if(chat.isSupported()) {
const chatPromise = chat.openGroupChat({ users: ["joe@contoso.com","bob@contoso.com"], topic: "Prep For Meeting Tomorrow", message: "Hi folks kicking off chat about our meeting tomorrow"});
chatPromise.
then((result) => {/*Successful operation*/}).
catch((error) => {/*Unsuccessful operation*/});
}
else { /* handle case where capability isn't supported */ }
注:
チャットが既に存在する場合は、そのチャットにディープ リンクが開きます。
会議のスケジュール設定ダイアログを開くディープ リンク
Teams アプリにディープ リンクを作成して会議のスケジュール 設定ダイアログを開き、次の方法を使用して会議のタイトルや参加者などの情報を提供できます。
TeamsJS の型指定された API を使用することをお勧めしますが、Teams 組み込みのスケジュール ダイアログへのディープ リンクを手動で作成することもできます。
会議のスケジュール設定ダイアログを開くディープ リンクを手動で構成する
ボット、コネクタ、またはメッセージ拡張機能のカードで使用できるディープ リンクを構成する場合は、次の形式を使用します。
https://teams.microsoft.com/l/meeting/new?subject=<meeting subject>&startTime=<date>&endTime=<date>&content=<content>&attendees=<user1>,<user2>,<user3>,...
注:
検索パラメーターは、空白 (``) の代わりに +
シグナルをサポートしていません。 URI エンコード コードがスペースの %20
を返していることを確認します。 たとえば、 ?subject=test%20subject
は良いですが、 ?subject=test+subject
は悪いです。
クエリ パラメーターは次のとおりです。
-
attendees
: 会議の出席者を表すユーザー ID のコンマ区切りリスト (省略可能)。 アクションを実行するユーザーは、会議の開催者です。 [ユーザー ID] フィールドでは、Microsoft EntraUserPrincipalName
(通常はメール アドレス) のみがサポートされます。 -
startTime
: イベントの開始時刻の省略可能なパラメーター。 開始時刻は 長い ISO 8601 形式である必要があります(例: 2018-03-12T23:55:25+02:00)。 -
endTime
: イベントの終了時刻の省略可能なパラメーター 。ISO 8601 形式でもあります。 -
subject
: 会議の件名の省略可能なパラメーター。 -
content
: 会議の詳細フィールドの省略可能なパラメーター。
注:
サポートされていないため、場所を指定することはできません。 開始時刻と終了時刻を生成するときは、タイム ゾーンを含む UTC オフセットを指定する必要があります。
ボットでこのディープ リンクを使用するには、カードのボタンの URL ターゲットとしてディープ リンクを指定するか、openUrl
アクションの種類を使用してタップ アクションとして指定できます。
例: https://teams.microsoft.com/l/meeting/new?subject=test%20subject&attendees=joe@contoso.com,bob@contoso.com&startTime=10%2F24%2F2018%2010%3A30%3A00&endTime=10%2F24%2F2018%2010%3A30%3A00&content=test%3Acontent
TeamsJS ライブラリを使用してディープ リンクを構成し、会議のスケジュール ダイアログを開く
また、Teams アプリで TeamsJS v.2.0 以降を使用して、手動でリンクを準備することなく会議のスケジュール ダイアログを開くこともできます。 Teams でスケジュール ダイアログを開くには、Teams がまだ予定表機能をサポートしていないため、元のディープ リンク URL ベースのメソッドを引き続き使用する必要があります。
// Open a scheduling dialog from your tab
if(calendar.isSupported()) {
const calendarPromise = calendar.composeMeeting({
attendees: ["joe@contoso.com", "bob@contoso.com"],
content: "test content",
endTime: "2018-10-24T10:30:00-07:00",
startTime: "2018-10-24T10:00:00-07:00",
subject: "test subject"});
calendarPromise.
then((result) => {/*Successful operation*/}).
catch((error) => {/*Unsuccessful operation*/});
}
else { /* handle case where capability isn't supported */ }
カレンダーの操作の詳細については、API リファレンス ドキュメントのカレンダー名前空間を参照してください。
ユーザーとの音声ビデオ通話を開始するためのディープ リンク
ユーザーが 1 対 1 通話、グループ通話、またはビデオ通話を開始するためのディープ リンクを準備するように Teams アプリを構成できます。 通話の種類と参加者を指定することで、1 人のユーザーまたはユーザーのグループに対してオーディオのみの呼び出しまたはオーディオ ビデオ通話を呼び出すことができます。 Teams が通話を発信する前に、クライアントは確認を求めます。 グループ通話がある場合は、同じディープ リンク呼び出しで一連の VoIP ユーザーと PSTN ユーザーを呼び出すことができます。
ビデオ通話で、Teams クライアントは通話の発信者のビデオをオンにする前に確認を求めます。 通話の受信者は、Teams の通話通知ウィンドウを使用して、音声のみで応答するか、音声とビデオで応答するかを選択できます。
注:
このメソッドは、会議の呼び出しには使用できません。
ディープ リンクは、次の 2 つの方法のいずれかで構成できます。
ユーザーとの音声ビデオ通話を開始するようにディープ リンクを手動で構成する
TeamsJS v.2.0 以降の型指定された API を使用することをお勧めしますが、手動で構成されたディープ リンクを使用して通話を開始することもできます。 次の形式を参照してください。
ディープ リンク | フォーマット | 例 |
---|---|---|
音声通話を行う | https://teams.microsoft.com/l/call/0/0?users=<user1>,<user2> |
https://teams.microsoft.com/l/call/0/0?users=joe@contoso.com |
音声またはビデオ通話を開始する | https://teams.microsoft.com/l/call/0/0?users=<user1>,<user2>&withVideo=true |
https://teams.microsoft.com/l/call/0/0?users=joe@contoso.com&withVideo=true |
オプションのパラメータ ソースを使用して音声通話とビデオ通話を発信する | https://teams.microsoft.com/l/call/0/0?users=<user1>,<user2>&withVideo=true&source=demoApp |
https://teams.microsoft.com/l/call/0/0?users=joe@contoso.com&withVideo=true&source=demoApp |
VoIP ユーザーと PSTN ユーザーの組み合わせに音声通話とビデオ通話を発信する | https://teams.microsoft.com/l/call/0/0?users=<user1>,4:<phonenumber> |
https://teams.microsoft.com/l/call/0/0?users=joe@contoso.com,4:9876543210 |
クエリ パラメーターは次のとおりです。
-
users
: 呼び出しの参加者を表すユーザー ID のコンマ区切りのリスト。 ユーザー ID フィールドは、Microsoft EntraUserPrincipalName
(通常はメール アドレス) または PSTN 通話でサポートされ、PSTN MRI 4:<phonenumber>をサポートします。 -
withVideo
: ビデオ通話を行うために使用できる省略可能なパラメーター。 このパラメーターを設定すると、呼び出し元のカメラのみがオンになります。 通話の受信者は、Teams 通話通知ウィンドウを通じて音声通話または音声通話とビデオ通話で応答できます。
TeamsJS ライブラリを使用してディープ リンクを構成して、ユーザーとの音声ビデオ通話を開始する
アプリケーションでは、TeamsJS v.2.0 以降を使用して、これらのディープ リンクを手動で準備することなく、呼び出しを開始することもできます。 次のコードは、TeamsJS を使用して呼び出しを開始する方法を示しています。
if(call.isSupported()) {
const callPromise = call.startCall({ targets: ["joe@contoso.com","bob@contoso.com","4:9876543210"], requestedModalities: [call.CallModalities.Audio], source: "demoApp"});
callPromise.
then((result) => {/*Successful operation*/}).
catch((error) => {/*Unsuccessful operation*/});
}
else { /* handle case where capability isn't supported */ }
会議のステージにコンテンツを共有するためのディープ リンク
ステージでコンテンツを共有するためのディープ リンクを追加するには、アプリ コンテキストが必要です。 アプリ コンテキストを使用すると、Teams クライアントはアプリ マニフェストをフェッチし、ステージでの共有が可能な場合にチェックできます。 アプリ コンテキストの例を次に示します。
{ "appSharingUrl" : "https://teams.microsoft.com/extensibility-apps/meetingapis/view", "appId": "9ec80a73-1d41-4bcb-8190-4b9eA9e29fbb" , "useMeetNow": false }
アプリ コンテキストのクエリ パラメーターは次のとおりです。
-
appID
: これは、アプリ マニフェストから取得できる ID です。 -
appSharingUrl
: ステージで共有する必要がある URL は、アプリ マニフェストで定義されている有効なドメインである必要があります。 URL が有効なドメインでない場合は、エラーの説明をユーザーに提供するエラー ダイアログが表示されます。 -
useMeetNow
: これには、true または false を指定できるブール型パラメーターが含まれます。True:
useMeetNow
値が true の場合、進行中の会議がない場合は、新しい会議が開始されます。 会議が進行中の場合、この値は無視されます。False:
useMeetNow
の既定値は false です。つまり、ディープ リンクがステージに共有され、会議が進行中でなければ、予定表のポップアップが表示されます。 ただし、会議中に直接共有できます。
すべてのクエリ パラメーターが適切に URI エンコードされ、アプリ コンテキストが最終的な URL で 2 回エンコードされている必要があることを確認します。 次に例を示します。
const appContext= JSON.stringify({
"appSharingUrl" : "https://teams.microsoft.com/extensibility-apps/meetingapis/view",
"appId": "9cc80a93-1d41-4bcb-8170-4b9ec9e29fbb",
"useMeetNow": false
});
const encodedContext = encodeURIComponent(appContext).replace(/'/g,"%27").replace(/"/g,"%22");
const encodedAppContext = encodeURIComponent(encodedContext).replace(/'/g,"%27").replace(/"/g,"%22");
ディープ リンクは、Teams Web から、または Teams デスクトップまたはモバイル クライアントから起動できます。
Teams Web からディープ リンクを起動し、ステージ上でコンテンツを共有するには、次の形式を使用します。
msteams:/l/meeting-share?deeplinkId={GUID}&fqdn={string}&lm=deeplink&appContext={json encoded app context}
例: https://teams.microsoft.com/l/meeting-share?deeplinkId={sampleid}&fqdn=teams.microsoft.com&lm=deeplink%22&appContext=%257B%2522appSharingUrl%2522%253A%2522https%253A%252F%252Fteams.microsoft.com%252Fextensibility-apps%252Fmeetingapis%252Fview%2522%252C%2522appId%2522%253A%25229cc80a93-1d41-4bcb-8170-4b9ec9e29fbb%2522%252C%2522useMeetNow%2522%253Atrue%257D
ディープ リンク | フォーマット | 例 |
---|---|---|
アプリを共有して Teams 予定表を開くには、 useMeeetNow が false の場合は既定です。 |
https://teams.microsoft.com/l/meeting-share?deeplinkId={deeplinkid}&fqdn={fqdn}}&lm=deeplink%22&appContext={encoded app context} |
https://teams.microsoft.com/l/meeting-share?deeplinkId={sampleid}&fqdn=teams.microsoft.com&lm=deeplink%22&appContext=%257B%2522appSharingUrl%2522%253A%2522https%253A%252F%252Fteams.microsoft.com%252Fextensibility-apps%252Fmeetingapis%252Fview%2522%252C%2522appId%2522%253A%25229cc80a93-1d41-4bcb-8170-4b9ec9e29fbb%2522%252C%2522useMeetNow%2522%253Afalse%257D |
アプリを共有し、インスタント会議を開始するには、 useMeeetNow が true の場合。 |
https://teams.microsoft.com/l/meeting-share?deeplinkId={deeplinkid}&fqdn={fqdn}}&lm=deeplink%22&appContext={encoded app context} |
https://teams.microsoft.com/l/meeting-share?deeplinkId={sampleid}&fqdn=teams.microsoft.com&lm=deeplink%22&appContext=%257B%2522appSharingUrl%2522%253A%2522https%253A%252F%252Fteams.microsoft.com%252Fextensibility-apps%252Fmeetingapis%252Fview%2522%252C%2522appId%2522%253A%25229cc80a93-1d41-4bcb-8170-4b9ec9e29fbb%2522%252C%2522useMeetNow%2522%253Atrue%257D |
クエリ パラメーターは次のとおりです。
-
deepLinkId
: テレメトリの関連付けに使用される任意の識別子。 -
fqdn
:fqdn
は省略可能なパラメーターで、ステージ上でアプリを共有するために会議の適切な環境に切り替えるために使用できます。 特定の環境で特定のアプリ共有が発生するシナリオをサポートします。fqdn
の既定値はエンタープライズ URL であり、使用可能な値は Teams for Life、teams.microsoft.com
、またはteams.microsoft.us
にTeams.live.com
されます。
注:
アプリが検証に合格するには、Web サイト、Web アプリ、アダプティブ カードからディープ リンクを作成するときに、文字列またはコピーとして 会議で共有 を使用します。
ディープ リンクを生成して 、アプリを共有してステージを 作成したり、会議を開始したり、会議に参加したりできます。
会議サイド パネルへのディープ リンク
会議の会議側パネルへのディープ リンクを生成できます。 会議側パネルへのディープ リンクには、次の形式を使用します。
https://teams.microsoft.com/l/entity/<appId>/<entityId>?webUrl=<entityWebUrl>&label=<entityLabel>&context=<context>
.
例:
https://teams.microsoft.com/l/entity/fe4a8eba-2a31-4737-8e33-e5fae6fee194/tasklist123?webUrl=https://tasklist.example.com/123/456&label=Task 456&context={"chatId": "17:b42de192376346a7906a7dd5cb84b673@thread.v2","contextType":"chat"}
既定では、会議のサイド パネルにディープ リンクが開きます。 会議のサイド パネルではなくアプリでディープ リンクを直接開くには、ディープ リンク形式で openInMeeting=false
を追加します。
https://teams.microsoft.com/l/entity/<appId>/<entityId>?webUrl=<entityWebUrl>&label=<entityLabel>&context=<context>&openInMeeting=false
詳細については、「 タブへのディープ リンク」を参照してください。
次のシナリオでは、会議側パネルにディープ リンクが開きません。
- アクティブな会議はありません。
- アプリマニフェストで
sidePanel
コンテキストが宣言されていません。 -
openInMeeting
はディープ リンク内のfalse
に設定されます。 - ディープ リンクは、会議ウィンドウまたはコンポーネントの外部で選択されます。
- ディープ リンクは、別の会議で作成されたディープ リンクなど、現在の会議と一致しません。
会議に参加するためのディープ リンク
Teams アプリは、Graph API を使用して会議 URL に参加するための URL を読み取ることができます。 このディープ リンクにより、ユーザーが会議に参加するための UI が表示されます。 詳細については、「onlineMeeting
を取得する」と「会議の詳細を取得する」を参照してください。
コード サンプル
サンプルの名前 | 説明 | .NET | Node.js |
---|---|---|---|
ディープ リンクを使用するサブエンティティ ID | このサンプルでは、ボット チャットからサブエンティティ ID を使用するタブへのディープ リンクを使用する方法を示します。 また、次のディープ リンクも表示されます。 - アプリへの移動 - チャットへの移動 - プロファイル ダイアログを開く - スケジュール 設定ダイアログを開く |
表示 | 表示 |
Platform Docs