VibeSMS は何をしますか?
AIエージェントをユーザー所有のAndroidスマートフォンおよびSIMに接続し、SMS受信箱全体を公開せずに利用できるようにします。単一の VIBESMS_KEY により、エージェントは割り当てられた電話番号のみにアクセスし、以下の4つの集中的なアクションをサポートします。
- Android端末がバインドされオンラインであるかを確認する。
- 外部サービスがメッセージを送信する前にイベントカーソルを取得する。
- そのカーソル以降に受信した新しい4~8桁の確認コードを待機する。
- キー分離されたSMSおよび着信通話イベントを読み取る。
Android端末は別のデバイス認証情報を使用してアップロードするため、エージェントキーはイベントをアップロードしたり他の番号を読み取ったりすることはできません。決定論的なAPI呼び出しにはバンドルされたクライアントを使用してください。
scripts/vibesms.py はこの SKILL.md からの相対パスで解決してください。カレントワーキングディレクトリにスキルが含まれていると想定しないでください。
前提条件
- 環境変数またはエージェントのシークレットストアに
VIBESMS_KEYが必要です。 - セルフホストインスタンスの場合のみ
VIBESMS_BASE_URLを使用します。デフォルトはhttps://sms.shareapi.aiです。 - ユーザーにキーをチャット、コマンド引数、ソースコード、ログに貼り付けるよう依頼しないでください。
- キーを出力に露出しないでください。キーがない場合は、シークレットを設定するようユーザーに依頼してください。
確認コードを受信する
-
外部SMSをトリガーする直前にカーソルを取得します。
python3 <skill-directory>/scripts/vibesms.py status -
JSONレスポンスから
cursor値を読み取ります。 -
SMSを送信するユーザー認可済みアクションをトリガーします。
-
そのカーソル以降に受信した最初の4~8桁のコードを待機します。
python3 <skill-directory>/scripts/vibesms.py wait-otp --after-id <cursor> --timeout 60 -
コードはユーザーが認可したタスクにのみ使用し、完了後は保持しないでください。
常に最初にカーソルを取得してください。カーソルがないと、古いメッセージが新しい確認コードと誤認される可能性があります。
端末の状態を確認する
次を実行します:
python3 <skill-directory>/scripts/vibesms.py status
bound が false の場合、キーがAndroid SIMとペアリングされていないことをユーザーに伝えます。online が false の場合、端末が再接続してオフラインキューを再生した後でもメッセージが到着する可能性があることを説明します。
受信箱イベントを読み取る
次のいずれかを実行します:
python3 <skill-directory>/scripts/vibesms.py inbox --after-id <cursor>
python3 <skill-directory>/scripts/vibesms.py inbox --type sms --limit 20
python3 <skill-directory>/scripts/vibesms.py inbox --type call --limit 20
タスク固有の読み取りには after-id を推奨します。ユーザーのタスクに必要なフィールドのみを返し、無関係なメッセージ内容や電話番号を繰り返さないでください。
エラー
401: キーが無効、無効化、またはローテーションされています。ユーザーにシークレットの更新を依頼してください。status=timeout: 該当するOTPが期限までに到着しませんでした。端末の状態を確認し、ユーザーがまだ待機を希望する場合にのみ再試行してください。- ネットワーク/TLS障害: ヘッダーやキーを表示せずに、エンドポイントと障害内容を報告してください。
生のエンドポイントスキーマやセルフホスト統合の詳細が必要な場合のみ、references/api.md を参照してください。