UIで集計通知チャネルを管理するだけでなく、NerdGraph APIを使用することもできます。
重要
このドキュメントでは、宛先と通知メッセージを使用した新しい通知プラットフォームでのNerdgraphAPIの使用について説明します。通知メッセージはチャネルとも呼ばれ、従来の通知チャネルとは異なります。
ヒント
NerdGraphの使用を開始するためのヘルプについては、NerdGraphの概要を参照してください。
チャネルの一覧表示とフィルタリング
channels
クエリを使用すると、アカウントごとにすべてのチャネルをページ分割できます。また、いくつかのフィルタリング機能を許可します。
次の例を見てみましょう。
account(id: YOUR_ACCOUNT_ID) {
チャネルをページ分割するには、最初のクエリでnextCursor
フィールドをリクエストする必要があります。
カーソルページネーションを使用すると、応答から返されるnextCursor
が空に戻るまで、結果セットを介して要求を続けます。これは、結果の最後に到達したことを意味します。
次の例を見てみましょう。
account(id: YOUR_ACCOUNT_ID) {
上のコードは、次のような結果のセットを返します。
"nextCursor": "/8o0y2qiR54m6thkdgHgwg==:jZTXDFKbTkhKwvMx+CtsPVM=",
"id": "01c0cbe7-3d70-47c1-99e0-adf906eed6c2",
"id": "05db0207-c137-4985-8cb5-f21e7e57b8cc",
"name": "Another Channel Name"
そのため、その後のリクエストでは、カーソルが空になるまで、このようにカーソルを提供します。
account(id: YOUR_ACCOUNT_ID) {
channels(cursor: "/8o0y2qiR54m6thkdgHgwg==:jZTXDFKbTkhKwvMx+CtsPVM=") {
APIは、名前によるチャネルクエリを許可します。name
フィルターは、完全一致と部分一致を返します。大文字と小文字は区別されません。これにより、指定された名前に一致するチャネルの情報のみが返されます。
この例では、名前に"DevOps"
が含まれるチャンネルを検索します。
account(id: YOUR_ACCOUNT_ID) {
channels(filters: { name: "DevOps" }) {
APIを使用すると、チャネルIDでクエリを実行できます。
account(id: YOUR_ACCOUNT_ID) {
channels(filters: { id: YOUR_CHANNEL_ID }) {
APIを使用すると、宛先IDでチャネルをクエリできます。
account(id: YOUR_ACCOUNT_ID) {
channels(filters: { destinationId: YOUR_DESTINATION_ID }) {
APIを使用すると、チャネルタイプでクエリを実行できます。次のクエリは、選択したアカウントのすべての電子メールチャネルを返します。
account(id: YOUR_ACCOUNT_ID) {
channels(filters: { type: EMAIL }) {
チャネルを作成する
チャネルを作成するには、チャネルタイプごとに異なる入力を指定する必要があります。各チャネルは宛先に接続されています。宛先については、宛先に関するNerdGraphチュートリアルを参照してください。
ベストプラクティスは、 channelSchema
エンドポイントを使用して、次のようにproperties
で送信する必要のあるフィールドを確認することです。
account(id: YOUR_ACCOUNT_ID) {
channelType: CHANNEL_TYPE
destinationId: YOUR_DESTINATION_ID
Jiraは構成可能なチケットシステムであるため、このチャネルを静的に作成する方法はありません。
静的フィールドには、 project
とissuetype
の2つがあります。
次に示すように、 project
の提案を取得し、値の1つをissuetype
の制約として使用します。
account(id: YOUR_ACCOUNT_ID) {
channelType: JIRA_CLASSIC
destinationId: YOUR_DESTINATION_ID
constraints: [{ key: "project", value: YOUR_PROJECT_VALUE }]
選択した値は、スキーマをフェッチするための制約として使用されます。
account(id: YOUR_ACCOUNT_ID) {
channelType: JIRA_CLASSIC
destinationId: YOUR_DESTINATION_ID
{ key: "project", value: YOUR_PROJECT_VALUE }
{ key: "issuetype", value: YOUR_ISSUE_TYPE_VALUE }
各フィールドを取得し、提案から、またはフリーテキストとして値を選択した後、チャネルを作成できます。
aiNotificationsCreateChannel(accountId: YOUR_ACCOUNT_ID, channel: {
destinationId: YOUR_DESTINATION_ID,
// ... And so forth with the rest of the fields
ServiceNowは構成可能なチケットシステムであるため、このチャネルを静的に作成する方法はありません。
上記のようにスキーマをフェッチしてから、各フィールドにフリーテキストを入力するか、提案を使用する必要があります。
account(id: YOUR_ACCOUNT_ID) {
destinationId: YOUR_DESTINATION_ID
各フィールドを取得し、提案から、またはフリーテキストとして値を選択した後、チャネルを作成できます。
aiNotificationsCreateChannel(accountId: YOUR_ACCOUNT_ID, channel: {
destinationId: YOUR_DESTINATION_ID,
// ... And so forth with the rest of the fields
aiNotificationsCreateChannel(
accountId: YOUR_ACCOUNT_ID
destinationId: YOUR_DESTINATION_ID
properties: [{ key: "channelId", value: YOUR_SLACK_CHANNEL_ID }]
payload
プロパティは、通知で送信されるペイロードです。ハンドルバー構文を使用して、リクエストから情報を動的に挿入します。
aiNotificationsCreateChannel(
accountId: YOUR_ACCOUNT_ID
destinationId: YOUR_DESTINATION_ID
properties: [{ key: "payload", value: "{\"key\":\"value\"}" }]
aiNotificationsCreateChannel(
accountId: YOUR_ACCOUNT_ID
destinationId: YOUR_DESTINATION_ID
eventSource
は、既存のイベントソースの完全なURLである必要があります。eventContent
は、次に示すように、通知の本文で送信されるペイロードです。
aiNotificationsCreateChannel(accountId: YOUR_ACCOUNT_ID, channel: {
destinationId: YOUR_DESTINATION_ID,
value: YOUR_AWS_EVENT_SOURCE
value: YOUR_EVENT_CONTENT/var>
PagerDutyには、サービスレベルとアカウントレベルの2種類の統合があります。詳細については、 PagerDuty統合ドキュメントを参照してください。
サービスレベル:
aiNotificationsCreateChannel(
accountId: YOUR_ACCOUNT_ID
type: PAGERDUTY_SERVICE_INTEGRATION
destinationId: YOUR_DESTINATION_ID
properties: [{ key: "summary", value: YOUR_PAGE_SUMMARY }]
アカウントレベル:
aiNotificationsCreateChannel(
accountId: YOUR_ACCOUNT_ID
type: PAGERDUTY_ACCOUNT_INTEGRATION
destinationId: YOUR_DESTINATION_ID
{ key: "summary", value: YOUR_PAGE_SUMMARY }
{ key: "email", value: EMAIL_OF_PD_USER }
{ key: "service", value: YOUR_PD_SERVICE_ID }
チャネルを更新する
チャネルを更新するときは、チャネルのすべての属性を指定する必要はないことに注意してください。たとえば、名前のみを更新する場合は、次に示すように、それが更新する必要がある唯一の属性です。
aiNotificationsUpdateChannel(
accountId: YOUR_ACCOUNT_ID
channelId: YOUR_CHANNEL_ID
channel: { name: "Updated channel Name" }
チャネルのテスト
NerdGraphAPIを介してチャネルをテストできます。これは、チャネルの作成前または作成後に実行できます。
aiNotificationsTestChannel(
accountId: YOUR_ACCOUNT_ID
type: PAGERDUTY_SERVICE_INTEGRATION
properties: [{ key: "summary", value: YOUR_PAGE_SUMMARY }]
aiNotificationsTestChannelById(
accountId: YOUR_ACCOUNT_ID
channelId: YOUR_CHANNEL_ID
チャンネルの削除
NerdGraphAPIを介してチャネルを削除できます。
aiNotificationsDeleteChannel(
accountId: YOUR_ACCOUNT_ID
channelId: YOUR_CHANNEL_ID