QStash スケジューラを使用して GPT Online で WhatsApp リマインダーを自動化する
QStash は、サーバーレス環境向けに設計されたタスク スケジューラおよびメッセージ キュー システムです。これは、状態の管理を気にすることなく、特定の間隔で 1 回または繰り返し実行される自動ワークフローを設定できるため、開発者にとって貴重なツールです。
QStash コンソールを試してみて、リクエストの作成方法の感覚を得ることができます。

使用例
私の製品 GPT Hotline は、基本的に WhatsApp 上の ChatGPT です (同じ基礎モデルを使用しています)。 ChatGPT アプリと同じように、専用の番号でボットにテキスト メッセージを送信できます。
GPT ホットラインは、テキストメッセージの送信以外にも、画像検索、ビデオ検索、ニュースなどの追加機能を提供します。さらに、ユーザーがボットにテキスト メッセージを送信して、指定した時間にメッセージを受信できるリマインダー機能も追加したいと考えていました。
ボットにテキスト メッセージを送信して、特定の時間にメッセージを送信できるシンプルなフロー。次のようになります:

以前にサーバーレス Redis に Upstash を使用したことがあったので、QStash についてはなんとなく知っていましたが、これはもっと学ぶ絶好の機会だと思いました。
詳しく見てみましょう
コード化したい高レベルのワークフローは次のとおりです。
ユーザーがリマインダーメッセージを送信 -> QStash ジョブがセットアップされる -> 指定された時間に QStash が API をトリガーする -> メッセージがユーザーに送信される
話を簡単にするために、QStash コードのみに焦点を当てます。 GPT ホットラインには、ボットのデフォルトの応答をオーバーライドする「パワー コマンド」があり、リマインダーを設定するコマンドは次の形式になります。
sudo reminder <TIME-INTERVAL> <MY-MESSAGE> たとえば、次のようにテキストを送信するとします。
sudo reminder 3h go for a walk 「sudo remember」コマンドはリマインダー コードをトリガーします。「3h」は、3 時間以内にリマインダー (「散歩に行く」) を送信することを示します。
GPT Hotline は Next.js を使用して構築されているため、いくつかの方法で QStash をトリガーできます。認証に使用できる verifySignature 関数がありますが、処理をシンプルにするために REST API アプローチを使用します。
// Note: There are CURL Command examples available in the QStash docs.
const YOUR_API_URL = "https://api.example.com";
const MY_MESSAGE = "go for a walk";
const REMINDER_TIME = "3h";
const MESSENGER = "1800-MCDONALDS";
await fetch(`https://qstash.upstash.io/v1/publish/${YOUR_API_URL}`, {
headers: {
Authorization: `Bearer ${process.env.QSTASH_TOKEN}`,
"Upstash-Delay": REMINDER_TIME,
"Content-Type": "application/json",
},
method: "POST",
body: JSON.stringify({
message: MY_MESSAGE,
messenger: MESSENGER,
}),
}); これは、QStash に送信できるフェッチ リクエストの例です。値をハードコードし、余分なフィールドを削除しましたが、これはアプリでの実際のフェッチ リクエストをよく表しています。
QStash にはメッセージの送信先となる URL が必要です。これは、指定した時間にトリガーする API URL になります。
Upstash-Delay 値によって、メッセージを送信する時間が決まります。 Upstash-Delay には、秒 (s)、分 (m)、時間 (h)、および日 (d) の値を指定できます。たとえば、30 分は 30 分、2 日は 2 日などです。一度だけではなく定期的に実行するジョブを設定したい場合は、cron ロジック* を備えた Upstash-Cron フィールドを使用します*。
また、受信者の番号 (メッセンジャー) とともにメッセージ本文を送信し、環境変数として設定されている QSTASH_TOKEN を使用して認証します。
それで終わりです!すべてが期待どおりに動作すると、リマインダーが設定されたという確認を受け取り、QStash は設定された時間にメッセージとメッセンジャーの値を使用して API をトリガーします (これにより、受信者にリマインダーが送信されます)。
結論
この機能は実装が少し複雑だと思っていたので先延ばしにしていましたが、QStash の助けを借りて、わずか一晩でこの機能を完成させることができました。
ぜひチェックしてみることをお勧めします。 1 日あたり 500 メッセージという寛大な無料枠があり、使い始めることができ、支払いはアプリケーションがスケールした場合にのみ行われるため、試してみない理由はありません。
乾杯、ビラル
sudo reminder 1m Good Luck!

-
Node.js、Socket.IO、Redis を使用してスケーラブルなリアルタイム マルチプレイヤー Tic-Tac-Toe ゲームを作成する
このチュートリアルでは、リアルタイム マルチプレイヤー 三目並べ ゲームを構築します。 Node.js を使用する 、Socket.IO 、 そしてRedis 。このゲームでは、2 人のプレーヤーが異なるブラウザ タブから接続し、交代でプレイし、プレイ中にリアルタイムの更新を確認できます。 Redis を使用します。 複数の WebSocket サーバー間でのゲーム ステートの同期を管理し、アプリケーションをスケーラブルにします。 最終的には、リアルタイム機能を備えた完全に機能するゲームが完成し、WebSocket と Redis を使用してスケーラブルなリアルタイム アプリケーションを構築
-
Redis HGETALL –ハッシュ値に含まれるすべてのフィールド/値のペアを取得する方法
このチュートリアルでは、キーに格納されているハッシュ値に含まれるすべてのフィールドと値のペアを取得する方法について学習します。このために、Redis HGETALLを使用します コマンド。 HGETALLコマンド このコマンドは、キーに格納されているハッシュ値に含まれるすべてのフィールドとそれに関連する値を返します。キーが存在しない場合は空のリストが返され、キーは存在するがキーに格納されている値がハッシュデータ型ではない場合はエラーが返されます。 RedisHGETALLコマンドの構文は次のとおりです。- 構文:- redis host:post> HGETALL <ke