Flex Gateway新着情報
Governance新着情報
Monitoring API Managerこれらの例では、Microsoft Teams Connector を使用して次のアクションを実行する方法を示しています。
これらの例を実行するには、以下が必要です。
Microsoft Teams の作業インスタンス
Microsoft Teams インスタンスにアクセスするためのログイン情報
Microsoft Teams Connector 1.0 以降
Microsoft Teams インスタンスの 2 人のユーザー (1 人のチームオーナーと 1 人のユーザー)
Anypoint Studio 7.x
このコネクタでは、OAuth を使用して接続を保護するため、OAuth 項目値 (クライアントログイン情報、キー、OAuth 関連の URL など) を指定する必要があります。次の手順を実行します。
OAuth 接続の設定ファイルを作成する
OAuth 関連のグローバル要素を設定する
プロパティファイルのグローバル要素を設定する
[Authorization Code
(認証コード)] および [Client Credentials
(クライアントログイン情報)] 許可種別のプロパティが含まれる OAuth 接続の設定ファイルを作成します。
/src/main/resources/
フォルダー内に mule-app.properties
という名前のファイルを作成します。
mule-app.properties
ファイルで、次のような [Authorization Code
(認証コード)] 許可種別の一連のプロパティを作成します。括弧で囲まれたテキスト (括弧を含む) は、各自の OAuth 設定の適切な値に置き換えます。
config.oauth.authorization.code.consumerKey=<consumerKey> config.oauth.authorization.code.consumerSecret=<consumerSecret> config.oauth.authorization.code.authorizationUrl=<authorizationUrl> config.oauth.authorization.code.accessTokenUrl=<accessTokenUrl>
mule-app.properties
ファイルで、次のような [Client Credentials
(クライアントログイン情報)] 許可種別の一連のプロパティを作成します。括弧で囲まれたテキスト (括弧を含む) は、各自の OAuth 設定の適切な値に置き換えます。
config.oauth.client.credentials.clientId=<clientId> config.oauth.client.credentials.clientSecret=<clientSecret> config.oauth.client.credentials.tokenUrl=<tokenUrl>
プロパティファイルの作成についての詳細は、「プロパティプレースホルダーの設定」を参照してください。
OAuth_Authorization_Code_Config
および OAuth_Client_Credentials_Config
ファイルのグローバル要素を設定します。
新しい Mule プロジェクトを作成します。
[Mule Palette (Mule パレット)] ビューで、[Search in Exchange (Exchange 内を検索)] をクリックして「microsoft teams
」と入力します。
[Selected modules (選択したモジュール)] セクションに Microsoft Teams Connector を追加し、[Finish (完了)] をクリックします。
[Global Elements (グローバル要素)] タブをクリックし、[Create (作成)] をクリックします。
[Connector Configuration (コネクタ設定)] > [Microsoft Teams Authorization Code Config (Microsoft Teams 認証コード設定)] を選択し、[OK] をクリックします。
次の値を入力します。
項目 | 値 | 説明 |
---|---|---|
Name (名前) |
|
設定の名前。 |
Consumer key (コンシューマーキー) |
|
サービスプロバイダーに登録されている OAuth コンシューマーキー。 |
Consumer secret (コンシューマーシークレット) |
|
サービスプロバイダーに登録されている OAuth コンシューマーシークレット。 |
Authorization url (認証 URL) |
|
サービスプロバイダーの認証エンドポイントの URL。 |
Access token url (アクセストークン URL) |
|
サービスプロバイダーのアクセストークンエンドポイントの URL。 |
Scopes (スコープ) |
デフォルト ( |
OAuth ダンス時に要求する Oauth スコープ。この値のデフォルトはアノテーションのスコープです。 |
Listener config (リスナー設定) |
|
アクセストークンコールバックエンドポイントで要求をリスンする HTTP リスナー設定。 |
Callback path (コールバックパス) |
|
アクセストークンコールバックエンドポイントのパス。 |
Authorize path (認証パス) |
|
OAuth ダンスをトリガーするローカル HTTP エンドポイントのパス。 |
External callback url (外部コールバック URL) |
|
コールバックエンドポイントがプロキシの背後にあるか、間接 URL でアクセスする場合にコールバックエンドポイントにアクセスするために OAuth プロバイダーで使用する URL。 |
[OK] をクリックします。
[Global Elements (グローバル要素)] タブをクリックし、[Create (作成)] をクリックします。
[Connector Configuration (コネクタ設定)] > [Microsoft Teams Client Credentials Config (Microsoft Teams クライアントログイン情報設定)] を選択し、[OK] をクリックします。
次の値を入力します。
項目 | 値 | 説明 |
---|---|---|
Name (名前) |
|
設定の名前。 |
Client id (クライアント ID) |
|
サービスプロバイダーに登録されている OAuth クライアント ID。 |
Client secret (クライアントシークレット) |
|
サービスプロバイダーに登録されている OAuth クライアントシークレット。 |
Token url (トークン URL) |
|
サービスプロバイダーのトークンエンドポイントの URL。 |
Scopes (スコープ) |
デフォルト ( |
OAuth ダンス時に要求する Oauth スコープ。この値のデフォルトはアノテーションのスコープです。 |
[OK] をクリックします。
mule-app.properties
ファイルのグローバル要素を設定し、このファイルの検索場所が Mule で認識されるようにします。
[Global Elements (グローバル要素)] タブをクリックし、[Create (作成)] をクリックします。
[Choose Global Type (グローバル種別の選択)] ダイアログで、[Configuration properties (設定プロパティ)] を選択し、[OK] をクリックします。
[File (ファイル)] 項目に「mule.app.properties
」と入力します。
[OK] をクリックします。
次のスクリーンショットは、新しいチームを作成する Studio アプリケーションフローを示しています。
新しいチームの作成には、HTTP Listener コンポーネント、Transform Message コンポーネント、Create Team 操作、2 番目の Transform Message コンポーネントの設定が含まれます。
フローを作成する手順は、次のとおりです。
Studio で新しい Mule プロジェクトを作成します。
[Mule Palette (Mule パレット)] ビューで「HTTP」を検索し、[Listener] 操作を選択します。
Listener 操作をキャンバスにドラッグします。
Listener 設定で、[Connector configuration (コネクタ設定)] 項目の横にある [+] をクリックしてグローバル要素を追加します。
デフォルトを受け入れます。
[HTTP] プロパティウィンドウで、[Path (パス)] 項目を /createTeam
に設定します。
最初の Transform Message コンポーネントでは、チームの作成に使用する入力のテンプレートを作成します。
[Mule Palette (Mule パレット)] ビューで、「transform message」を検索します。
Transform Message コンポーネントをキャンバスの Listener コンポーネントの右にドラッグします。
Transform Message 設定で、[Output (出力)] セクションの括弧を次の XML で上書きします。
{
"template@odata.bind": "https://graph.microsoft.com/v1.0/teamsTemplates('standard')",
description: message.attributes.queryParams.description,
displayName: message.attributes.queryParams.displayName,
"members":[
{
"@odata.type":"#microsoft.graph.aadUserConversationMember",
"user@odata.bind":"https://graph.microsoft.com/v1.0/users('" ++ message.attributes.queryParams.user as String ++ "')",
"roles":[
"owner"
]
}
}
dataweave
Create team 操作では、ユーザー入力に基づいて新しいチームを作成します。
[Create team] 操作をキャンバスの [Transform Message] コンポーネントの右にドラッグします。
[Create team] の設定で、[Connector configuration (コネクタ設定)] ドロップダウンをクリックし、[Microsoft-Teams-Client-Config] を選択します。
グローバル要素種別として [Microsoft_Teams_Client_Credentials_Config] を選択し、[OK] をクリックします。
[Create team] のプロパティウィンドウで、次の項目を設定します。
項目 | 値 |
---|---|
Display Name (表示名) |
|
Connector Configuration (コネクタ設定) |
|
Message (メッセージ) |
|
この Transform Message コンポーネントでは、Create team 操作の出力を JSON 形式に変換します。
[Mule Palette (Mule パレット)] ビューで、「transform message
」を検索します。
Transform Message コンポーネントをキャンバスの Listener コンポーネントの右にドラッグします。
新しい [Transform Message (メッセージの変換)] コンポーネントをクリックして、出力を application/json
に設定します。
%dw 2.0
output application/json
dataweave
新しいチームのプロパティおよびリレーションを取得する 2 番目のフローを作成します。このフローでは、Get Team 操作を使用します。
新しいチームのメンバーに関する情報を取得する 3 番目のフローを作成します。このフローでは、List team members 操作を使用します。
チームで使用するチャネルに関する情報を取得する 4 番目のフローを作成します。このフローでは、List channels 操作を使用します。
チームへの新入社員のオンボーディングを行う 5 番目のフローを作成します。 このフローでは、次の操作を使用します。
新しいメンバーをチームに追加する Add team member
新しいチャネルを作成する Create channel
新しく作成されたチャネルに新しいメンバーを追加する Add channel member
ようこそメッセージを作成する Create message
チャネルを削除する 6 番目のフローを作成します。このフローでは、Delete channel 操作を使用します。
チームからメンバーを削除する 7 番目のフローを作成します。このフローでは、Remove team member 操作を使用します。
アプリケーションを実行する手順は、次のとおりです。
Package Explorer でプロジェクトを右クリックし、[Run As (別のユーザーとして実行)] > [Mule Application (Mule アプリケーション)] を選択します。
アプリケーションをデプロイしたら、Web ブラウザーを開きます。
http://localhost:8081/authorize
という URL を入力して、OAuth ダンスを開始します。
ログイン画面で、Microsoft Teams にアクセスするためのログイン情報を入力し、[Login (ログイン)] をクリックします。
[Allow (許可)] をクリックします。
次の表に示すように、関連付けられた URL を入力してフローを開始します。URL にクエリパラメーターがある場合、パラメーター値が含まれていることを確認します。
Flow (フロー) | URL | 注意 |
---|---|---|
新しいチームを作成する |
|
|
チームのプロパティおよびリレーションを取得する |
|
|
チームチャネルを取得する |
|
この例ではチャネルを作成しないため、デフォルトチャネルのみが返されます。 |
チームへの新入社員のオンボーディングを行う |
|
|
チームチャネルを削除する |
|
|
チームメンバーの削除 |
|
この XML コードをプロジェクトの [Configuration XML (設定 XML)] タブに貼り付けて、前のセクションで説明したフローを試してください。このコードを貼り付けたら、[Regenerate 'doc:id' Values (「doc:id」値を再生成)] ダイアログで [Yes (はい)] をクリックします。
<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns:ee="http://www.mulesoft.org/schema/mule/ee/core" xmlns:http="http://www.mulesoft.org/schema/mule/http"
xmlns:microsoftTeams="http://www.mulesoft.org/schema/mule/microsoftTeams"
xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/microsoftTeams http://www.mulesoft.org/schema/mule/microsoftTeams/current/mule-microsoftTeams.xsd
http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd
http://www.mulesoft.org/schema/mule/ee/core http://www.mulesoft.org/schema/mule/ee/core/current/mule-ee.xsd">
<configuration-properties file="mule-app.properties"/>
<microsoftTeams:client-credentials-config name="OAuth_Client_Credentials_Config" doc:name="Microsoft Teams Client Credentials Config">
<microsoftTeams:oauth-client-credentials-connection >
<microsoftTeams:oauth-client-credentials clientId="${config.oauth.client.credentials.clientId}" clientSecret="${config.oauth.client.credentials.clientSecret}" tokenUrl="${config.oauth.client.credentials.tokenUrl}" scopes="https://graph.microsoft.com/.default" />
</microsoftTeams:oauth-client-credentials-connection>
</microsoftTeams:client-credentials-config>
<http:listener-config name="HTTP_Listener_config" doc:name="HTTP Listener config">
<http:listener-connection host="0.0.0.0" port="8081" />
</http:listener-config>
<http:listener-config name="auth" doc:name="HTTP Listener config" >
<http:listener-connection host="0.0.0.0" port="8083" />
</http:listener-config>
<microsoftTeams:authorization-code-config name="OAuth_Authorization_Code_Config" doc:name="Microsoft Teams Authorization Code Config" >
<microsoftTeams:oauth-authorization-code-connection >
<microsoftTeams:oauth-authorization-code consumerKey="${config.oauth.authorization.code.consumerKey}" consumerSecret="${config.oauth.authorization.code.consumerSecret}" authorizationUrl="${config.oauth.authorization.code.authorizationUrl}" accessTokenUrl="${config.oauth.authorization.code.accessTokenUrl}" scopes="https://graph.microsoft.com/.default" />
<microsoftTeams:oauth-callback-config listenerConfig="auth" callbackPath="/callback" authorizePath="/authorize" externalCallbackUrl="http://localhost:8083/callback" />
</microsoftTeams:oauth-authorization-code-connection>
</microsoftTeams:authorization-code-config>
<flow name="1.CREATE-TEAM" >
<http:listener doc:name="Listener" config-ref="HTTP_Listener_config" path="/createTeam"/>
<ee:transform doc:name="Transform Message">
<ee:message >
<ee:set-payload ><![CDATA[%dw 2.0
output application/json
---
{
"template@odata.bind": "https://graph.microsoft.com/v1.0/teamsTemplates('standard')",
description: message.attributes.queryParams.description,
displayName: message.attributes.queryParams.displayName,
"members":[
{
"@odata.type":"#microsoft.graph.aadUserConversationMember",
"user@odata.bind":"https://graph.microsoft.com/v1.0/users('" ++ message.attributes.queryParams.user as String ++ "')",
"roles":[
"owner"
]
}
]
}]]></ee:set-payload>
</ee:message>
</ee:transform>
<microsoftTeams:create-team doc:name="Create team" config-ref="OAuth_Client_Credentials_Config"/>
<ee:transform doc:name="Transform Message">
<ee:message >
<ee:set-payload ><![CDATA[%dw 2.0
output application/json
---
payload]]></ee:set-payload>
</ee:message>
</ee:transform>
</flow>
<flow name="2.GET-CREATED-TEAM">
<http:listener doc:name="Listener" config-ref="HTTP_Listener_config" path="/getTeam" />
<microsoftTeams:get-team doc:name="Get team" teamId="#[message.attributes.queryParams.team]" select="#[message.attributes.queryParams.select]" config-ref="OAuth_Client_Credentials_Config">
<microsoftTeams:advanced-query-params >
</microsoftTeams:advanced-query-params>
</microsoftTeams:get-team>
<ee:transform doc:name="Transform Message">
<ee:message>
<ee:set-payload><![CDATA[%dw 2.0
output application/json
---
payload]]></ee:set-payload>
</ee:message>
</ee:transform>
</flow>
<flow name="3.LIST-TEAM-MEMBERS-FROM-THE-NEW-TEAM">
<http:listener doc:name="Listener" path="/listTeamMembers" config-ref="HTTP_Listener_config"/>
<microsoftTeams:list-team-members doc:name="List team members" teamId="#[message.attributes.queryParams.team]" config-ref="OAuth_Client_Credentials_Config"/>
<ee:transform doc:name="Transform Message">
<ee:message >
<ee:set-payload ><![CDATA[%dw 2.0
output application/json
---
payload]]></ee:set-payload>
</ee:message>
</ee:transform>
</flow>
<flow name="4.LIST-EXISTING-CHANNELS-FROM-THE-NEW-TEAM">
<http:listener doc:name="Listener" config-ref="HTTP_Listener_config" path="/listChannels"/>
<microsoftTeams:list-channels doc:name="List channels" doc:id="e260eb05-4be8-4da9-9cfa-e220ecb4a49a" teamId="#[message.attributes.queryParams.team]" config-ref="OAuth_Client_Credentials_Config">
<microsoftTeams:advanced-query-params >
</microsoftTeams:advanced-query-params>
</microsoftTeams:list-channels>
<ee:transform doc:name="Transform Message">
<ee:message >
<ee:set-payload ><![CDATA[%dw 2.0
output application/json
---
message]]></ee:set-payload>
</ee:message>
</ee:transform>
</flow>
<flow name="5.NEW-HIRE-TEAM-ONBOARDING">
<http:listener doc:name="Listener" config-ref="HTTP_Listener_config" path="/newHireFlow"/>
<set-variable value="#[message.attributes.queryParams.channelOwner]" doc:name="Set Variable" variableName="channelOwner"/>
<set-variable value="#[message.attributes.queryParams.channelName]" doc:name="Set Variable" variableName="name"/>
<set-variable value="#[message.attributes.queryParams.userToOnboard]" doc:name="Set Variable" variableName="userToOnboard"/>
<set-variable value="#[message.attributes.queryParams.team]" doc:name="Set Variable" variableName="team"/>
<microsoftTeams:add-team-member doc:name="Add team member" teamId="#[vars.team]" userId="#[vars.userToOnboard]" config-ref="OAuth_Client_Credentials_Config"/>
<ee:transform doc:name="Transform Message" >
<ee:message >
<ee:set-payload ><![CDATA[%dw 2.0
output application/java
---
{
description: "This channel will be used to onboard new hire " ++ vars.name as String,
displayName: "Welcome " ++ vars.name as String ++ uuid()[0 to 5],
membershipType: "private",
"members":
[
{
"@odata.type":"#microsoft.graph.aadUserConversationMember",
"user@odata.bind":"https://graph.microsoft.com/v1.0/users('" ++ vars.channelOwner as String ++ "')",
"roles":["owner"]
}
]
}]]></ee:set-payload>
</ee:message>
</ee:transform>
<microsoftTeams:create-channel doc:name="Create channel" teamId="#[vars.team]" config-ref="OAuth_Client_Credentials_Config"/>
<set-variable value="#[payload.id]" doc:name="Set Variable" variableName="channel"/>
<microsoftTeams:add-channel-member doc:name="Add channel member" channelId="#[vars.channel]" teamId="#[vars.team]" userId="#[vars.userToOnboard]" owner="true" config-ref="OAuth_Client_Credentials_Config"/>
<ee:transform doc:name="Transform Message" >
<ee:message >
<ee:set-payload ><![CDATA[%dw 2.0
output application/json
---
{
body: {
content: "Welcome to the team " ++ vars.name as String
}
}]]></ee:set-payload>
</ee:message>
</ee:transform>
<microsoftTeams:create-message doc:name="Create message" config-ref="OAuth_Authorization_Code_Config" teamId="#[vars.team]" channelId="#[vars.channel]"/>
<ee:transform doc:name="Transform Message" >
<ee:message >
<ee:set-payload ><![CDATA[%dw 2.0
output application/json
---
payload]]></ee:set-payload>
</ee:message>
</ee:transform>
</flow>
<flow name="6.DELETE-CHANNEL-FROM-TEAM">
<http:listener doc:name="Listener" config-ref="HTTP_Listener_config" path="/deleteChannel" />
<microsoftTeams:delete-channel doc:name="Delete channel" teamId="#[message.attributes.queryParams.team]" channelId="#[message.attributes.queryParams.channel]" config-ref="OAuth_Client_Credentials_Config"/>
</flow>
<flow name="7.REMOVE-TEAM-MEMBER">
<http:listener doc:name="Listener" config-ref="HTTP_Listener_config" path="/removeTeamMember" />
<microsoftTeams:remove-team-member doc:name="Remove team member" teamId="#[message.attributes.queryParams.team]" membershipId="#[message.attributes.queryParams.member]" config-ref="OAuth_Client_Credentials_Config"/>
</flow>
</mule>
xml