Claude CodeでTwilio SMS/通話機能を実装する方法
Claude Codeを活用したTwilio APIによるSMS送信・通話機能の実装ガイド。二要素認証、通知システム、IVRの構築まで実践的に解説します。
TwilioのSMS/通話機能をClaude Codeで実装する
Twilioはプログラマブルな通信APIを提供するプラットフォームです。SMS送信、音声通話、二要素認証など、通信機能をアプリに組み込めます。Claude Codeを使えば、TwilioのAPIを効率的に活用できます。
SMS送信の基本
> TwilioでSMS送信するサービスクラスを作って。
> テンプレート対応とリトライ処理も含めて。
// src/services/sms.ts
import twilio from 'twilio';
const client = twilio(
process.env.TWILIO_ACCOUNT_SID!,
process.env.TWILIO_AUTH_TOKEN!
);
const FROM_NUMBER = process.env.TWILIO_PHONE_NUMBER!;
export class SmsService {
async send(to: string, body: string): Promise<string> {
try {
const message = await client.messages.create({
body,
from: FROM_NUMBER,
to,
});
console.log(`SMS sent: ${message.sid}`);
return message.sid;
} catch (error: any) {
if (error.code === 21211) {
throw new Error('無効な電話番号です');
}
throw error;
}
}
async sendWithRetry(
to: string,
body: string,
maxRetries = 3
): Promise<string> {
for (let i = 0; i < maxRetries; i++) {
try {
return await this.send(to, body);
} catch (error) {
if (i === maxRetries - 1) throw error;
await new Promise(r => setTimeout(r, 1000 * (i + 1)));
}
}
throw new Error('Max retries exceeded');
}
}
二要素認証(2FA)の実装
> Twilio Verifyを使った二要素認証を実装して。
> コードの送信と検証の両方を作って。
// src/services/verification.ts
import twilio from 'twilio';
const client = twilio(
process.env.TWILIO_ACCOUNT_SID!,
process.env.TWILIO_AUTH_TOKEN!
);
const VERIFY_SERVICE_SID = process.env.TWILIO_VERIFY_SERVICE_SID!;
export class VerificationService {
// 認証コードの送信
async sendCode(
to: string,
channel: 'sms' | 'call' | 'email' = 'sms'
): Promise<void> {
await client.verify.v2
.services(VERIFY_SERVICE_SID)
.verifications.create({
to,
channel,
});
console.log(`Verification code sent to ${to} via ${channel}`);
}
// 認証コードの検証
async verifyCode(to: string, code: string): Promise<boolean> {
try {
const check = await client.verify.v2
.services(VERIFY_SERVICE_SID)
.verificationChecks.create({
to,
code,
});
return check.status === 'approved';
} catch (error: any) {
if (error.code === 20404) {
return false; // コードが期限切れ
}
throw error;
}
}
}
APIエンドポイントの実装
// src/api/auth/verify.ts
import { VerificationService } from '../../services/verification';
const verifyService = new VerificationService();
// コード送信
export async function POST(req: Request) {
const { phone } = await req.json();
if (!phone) {
return Response.json({ error: '電話番号が必要です' }, { status: 400 });
}
try {
await verifyService.sendCode(phone);
return Response.json({ success: true, message: '認証コードを送信しました' });
} catch (error) {
return Response.json({ error: '送信に失敗しました' }, { status: 500 });
}
}
// コード検証
export async function PUT(req: Request) {
const { phone, code } = await req.json();
const isValid = await verifyService.verifyCode(phone, code);
if (isValid) {
return Response.json({ success: true, message: '認証成功' });
}
return Response.json({ error: '無効なコードです' }, { status: 400 });
}
通知システムの構築
> 注文ステータス変更時にSMS通知を送る仕組みを作って。
// src/services/notification.ts
import { SmsService } from './sms';
const smsService = new SmsService();
const TEMPLATES = {
ORDER_CONFIRMED: (orderId: string) =>
`ご注文 #${orderId} を承りました。準備が整い次第、発送いたします。`,
ORDER_SHIPPED: (orderId: string, trackingUrl: string) =>
`ご注文 #${orderId} を発送しました。配送状況: ${trackingUrl}`,
ORDER_DELIVERED: (orderId: string) =>
`ご注文 #${orderId} が配達されました。ご利用ありがとうございます。`,
};
export async function notifyOrderStatus(
phone: string,
orderId: string,
status: 'confirmed' | 'shipped' | 'delivered',
metadata?: { trackingUrl?: string }
) {
let message: string;
switch (status) {
case 'confirmed':
message = TEMPLATES.ORDER_CONFIRMED(orderId);
break;
case 'shipped':
message = TEMPLATES.ORDER_SHIPPED(orderId, metadata?.trackingUrl || '');
break;
case 'delivered':
message = TEMPLATES.ORDER_DELIVERED(orderId);
break;
}
await smsService.sendWithRetry(phone, message);
}
まとめ
Twilioの通信APIをClaude Codeで効率的に実装し、SMS通知や二要素認証を素早くアプリに組み込めます。認証実装ガイドやWebhook実装も合わせて参考にしてください。
Twilioの詳細はTwilio公式ドキュメントを参照してください。
#Claude Code
#Twilio
#SMS
#通話
#API連携
関連記事
Use Cases
Use Cases
Claude CodeでCORS設定完全ガイド:クロスオリジン通信の実践解説
Claude Codeを活用したCORS設定の完全ガイド。プリフライトリクエスト、認証付きリクエスト、トラブルシューティングまで実践的に解説します。
Use Cases
Use Cases
Claude Codeで通貨フォーマットを正しく実装する
Claude Codeを使って、多通貨対応・ロケール別フォーマット・為替レート変換など、通貨の表示と処理を正しく実装する方法を解説します。
Use Cases
Use Cases
Claude CodeでDiscord Botを開発する実践ガイド
Claude Codeを活用したDiscord Botの開発方法を解説。discord.js、スラッシュコマンド、ボタン操作、Embed、音声チャンネル連携まで実践的に紹介します。