コンテンツにスキップ

検索はプロダクションビルドでのみ利用可能です。 ローカルでテストするには、サイトをビルドしてプレビューしてください。

チャットNG管理

チャットNG は連絡先に対するメッセージ送受信の制限機能です。3種類のNG タイプがあり、それぞれ制限範囲が異なります。


NGタイプ設定者制限範囲用途
SHOP_NG店舗スタッフ双方向ブロック迷惑行為への対応
USER_NGシステム管理者顧客→店舗の送信ブロック運営判断による制限
NO_PURELOVERS_USERシステム自動双方向ブロックpurelovers 未連携
方向SHOP_NGUSER_NGNO_PURELOVERS_USER
店舗 → 顧客xox
顧客 → 店舗xxx

NG ステータスの変更は全て contact_chat_ng_history テーブルに記録されます。

フィールド説明
contactId対象連絡先
shopId店舗 ID
ngTypeNG タイプ
isActive有効/無効
reason変更理由
changedBy変更者
changedAt変更日時
Vintage RPC: getContactChatNgHistory({ id, shopId })
→ { history: ChatNgHistory[] }

purelovers と連携していない連絡先を作成した場合、NO_PURELOVERS_USER が自動的に設定されます。

purelovers 連携が後から行われた場合は、手動で NG を解除する必要があります。


メッセージ送信時に、Fizz サービスがチャットNG を確認します。

// Fizz のメッセージ送信処理内
const chatNgStatuses = await db.query.contactChatNg.findMany({
where: {
contactId: contact.id,
shopId: room.shopId,
isActive: true
}
});
for (const ng of chatNgStatuses) {
if (ng.ngType === 'SHOP_NG') {
// 双方向ブロック
return error(403, 'チャットNG: 店舗NG');
}
if (ng.ngType === 'USER_NG' && senderType === 'customer') {
// 顧客→店舗のみブロック
return error(403, 'チャットNG: ユーザーNG');
}
if (ng.ngType === 'NO_PURELOVERS_USER') {
// 双方向ブロック
return error(403, 'チャットNG: purelovers未連携');
}
}

チャットNG が設定されている連絡先は、一括配信のターゲットからも自動的に除外されます。

-- システムフィルタとして常に適用
SELECT DISTINCT contactId
FROM contact_chat_ng
WHERE isActive = true
AND ngType IN ('SHOP_NG', 'USER_NG', 'NO_PURELOVERS_USER')
-- 対象から除外
WHERE id NOT IN (chatNgContactIds)

詳細は ターゲティング を参照してください。


NG が設定されたルームは isBlocked: true フラグで表示されます。

チャットタブがロックアイコンで表示され、メッセージ入力が無効化されます。

[プロフィール] [🔒 チャット]

連絡先詳細からNG の有効/無効を切り替え、理由を入力できます。変更履歴も閲覧可能です。