We’re sorry we missed you at re:Invent, but we can still meet!

RoboMoの紹介 Momento Vector IndexによるDiscordボット

Momentoの便利な質問応答Discordボット、RoboMoの作り方をご紹介します。

Anita Ruangrotsakun headshot
Anita Ruangrotsakun
Author

Share

Momentoのデベロッパーエコシステムエンジニアは最近、顧客や顧客と接する同僚をより良くサポートする方法をブレインストーミングするために集まりました。その中の素晴らしいアイデアのひとつが、DiscordでRoboMoという名前のボットを作って、私たちをサポートさせるというものでした!

RoboMoは、Momento Vector Index (MVI)とOpenAIを使って、Momento開発者のドキュメントやブログ記事に基づいて回答を提供する質問応答システムのフレンドリーなユーザーインターフェイスとして機能します。 RoboMoは、Momento Vector Index (MVI)とOpenAIを使って、Momento開発者のドキュメントブログ記事に基づいて回答を提供する質問応答システムのフレンドリーなユーザーインターフェイスとして機能します。RoboMoはDiscordで四六時中コミュニティからの質問に答えることができます。RoboMoは四六時中Discordでコミュニティの質問に答えることができます。

この記事では、RoboMo Discord bot の構築方法について説明します。RoboMoはMomentoのドキュメントに関する質問にしか答えられませんが、MVIバックエンドで取り込んだソースに関する質問に答えるために、あなた自身のDiscordボットを構築することができます。

独自の質問応答システムの構築については、こちらのステップバイステップガイドをご覧ください。それでは、MomentoがどのようにRoboMoを開発したかを見てみましょう!

ステップ1: Discordボットアプリケーションを作成する

Discord Getting Startedガイドの最初のステップに従い、Discord開発者ポータルでアプリケーションを作成しました。ボットのトークンを AWS Secrets Manager に保存し、”Privileged Gateway Intents” セクションの “MESSAGE CONTENT INTENT” を有効にして、RoboMo が Discord サーバで送信されたメッセージの内容を読めるようにしました。

ステップ2: discord.jsクライアントの作成

Discord APIとやりとりするために、discord.jsライブラリを使用しました。下のコード・スニペットにあるように、まずdiscord.jsクライアント・オブジェクトを作成し、ボットのトークンを使ってログインします。ボットのユーザーIDを保存し、サーバーで発生する新しいイベントを待ち受けます。

import {Client, GatewayIntentBits} from 'discord.js';


async function main() {
  let botId = '';
  const client = new Client({
    intents: [
      GatewayIntentBits.Guilds, 
      GatewayIntentBits.MessageContent, 
      GatewayIntentBits.GuildMessages
    ],
  });


  client.once('ready', readyClient => {
    console.log(`Logged in as ${readyClient.user.tag}!`);
    botId = readyClient.user.id;
  });


  await client.login(YourDiscordBotToken);
}

ステップ3:言及に反応する

次に、”messageCreate “イベントを処理するイベントリスナーをセットアップします。各メッセージに@RoboMoの言及がないかチェックし、ボット自身によって送信されたものでないことを確認します。次に、POSTリクエストを行ってメッセージの内容を質問応答APIに送信し、受信したメッセージへの返信としてレスポンスを返します。

client.on('messageCreate', async message => {
  if (message.mentions.users.has(botId) && !message.author.bot) {
    const fetchResponse = await fetch('https://your-Q&A-system-endpoint', {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json',
      },
      body: JSON.stringify({input: message.cleanContent.replace('@RoboMo', '')}),
    });
    const roboMoAnswer = await fetchResponse.json();
    await message.reply(roboMoAnswer['output']);
  }
}

ステップ4:Discordボットをデプロイする

私たちはボットをローカルで微調整した後、AWS Fargateを使用してデプロイしました。これにより、RoboMoは常にメンションに耳を傾け、質問に応答する準備ができます。

まとめ

RoboMo APIとDiscordボットのコードはすべてこのGitHubリポジトリにあります。特にDiscordボットのコードはこのファイルに、FargateにデプロイするためのCDKコンストラクトはこのファイルにあります。

今すぐDiscordでロボモとチャットしてみて、感想をお聞かせください!

Share