Redis
 Computer >> コンピューター >  >> プログラミング >> Redis

Upstashチャットボックスの発表:Next.jsサイトにライブチャットを簡単導入

リアルタイムでインタラクティブなコミュニケーションは、優れたユーザー体験を実現するうえで不可欠です。だからこそ、多くの企業が自社のWebサイトにライブチャットウィジェットを設置しています。

Upstashチャットボックスとは

これはWebサイト向けのチャットボックスウィジェットと管理用チャットパネルをセットにしたツールで、ユーザーと開発者・管理者をつなぎます。これにより、双方向のインタラクティブなコミュニケーションを簡単に実現できます。

本プロジェクトはNext.jsで構築されており、データの保存にはUpstash Redisを使用しています。

ユーザーが会話を開始

Upstashチャットボックスの発表:Next.jsサイトにライブチャットを簡単導入

新規チャットの通知がSlackに届く

Upstashチャットボックスの発表:Next.jsサイトにライブチャットを簡単導入

管理者が返信できる

Upstashチャットボックスの発表:Next.jsサイトにライブチャットを簡単導入

デモはこちらからご覧いただけます。

コンソールに表示されるチャットIDを確認し、/chat/{id} にアクセスすると、管理パネルと両インターフェースがどのように連携するかを実際に確かめられます。

1. データベースと環境変数を作成する

データはUpstash Redisに保存されます。

まずUpstash Consoleで無料のRedisデータベースを作成しましょう。

次に、.env.local.example ファイルを .env.local(Gitでは無視されるファイル)としてコピーします。

cp .env.local.example .env.local
  • UPSTASH_REDIS_REST_URLUPSTASH_REDIS_REST_TOKEN は、Upstash Consoleのデータベース詳細ページで確認できます。
  • SLACK_WEBHOOK_URL は、https://api.slack.com/messaging/webhooks のSlackインテグレーションページで取得できます。

2. パッケージをインストールする

yarn add @upstash/chatbox

3. CSSとウィジェットをインポートする

// pages/_app.js
import "@upstash/chatbox/index.css";
import dynamic from "next/dynamic";

const ChatBoxWidget = dynamic({
  loader: () => import("@upstash/chatbox").then((mod) => mod.ChatBoxWidget),
  ssr: false,
});

export default function MyApp({ Component, pageProps }) {
  return (
    <>
      <ChatBoxWidget />
      <Component {...pageProps} />
    </>
  );
}

各種オプションは、Reactのpropsとして渡すことができます。

キーデフォルト値
themeColor?string#2d00c6
textColor?string#fff
title?stringHi 👋
description?stringAsk us anything, or share your feedback.
showOnInitial?booleanfalse
customIcon?React.ReactElementなし

4. 管理ダッシュボードを設定する

// pages/chat/[id].js
import dynamic from "next/dynamic";

const ChatBoxAdmin = dynamic({
  loader: () => import("@upstash/chatbox").then((mod) => mod.ChatBoxAdmin),
  ssr: false,
});

export default function () {
  return <ChatBoxAdmin />;
}

5. APIを作成する

// pages/api/chatbox/[...chatbox].js
import createChatBoxAPI from "@upstash/chatbox/api";

const ChatBoxAPI = createChatBoxAPI({
  webhooks: [process.env.SLACK_WEBHOOK_URL],
});

export default ChatBoxAPI;

おめでとうございます!

これで、あなたのサイトにもユーザー向けのオリジナルチャットボックスが完成しました。ぜひ活用してみてください!

ソースコードはこちら、npmパッケージはこちらからご覧いただけます。

このプロジェクトに関するご意見やアイデアをぜひお聞かせください。サービスへのフィードバックは、TwitterまたはDiscordからお寄せいただけます。

  1. Redis初のアンバサダー制度「Redis Insiders」プログラム発表

    Redisはこのたび、初となるアンバサダープログラム「Redis Insiders(レディス・インサイダーズ)」を立ち上げました。 Redisはオープンソースとして世界中で何百万人ものユーザーに利用されており、開発者コミュニティは私たちのプロダクトの中心的存在です。最も熱心で情熱的なコミュニティメンバーの皆さまと協力し、Redisについて世界へ発信しながら、皆さんのプレゼンス向上も後押ししていきたいと考えています。 Redisを活用している開発者で、コードについて書いたり話したりするのが好きな方なら、Redis Insiderになれるチャンスがあります。特に、テック業界において少数派(アンダー

  2. AptWatcherの発表:サーバーのaptパッケージ更新をSlackへ通知するシンプルなツール

    Honeybadgerでは、すべてのサーバーにおけるaptパッケージの更新状況を把握し続けるために、これまで「apticron」を活用してきました。当初はapticronからの通知メールを自分の受信箱で確認していましたが、途中から「Slackの通知チャンネルに流れたほうが扱いやすい」と感じるようになりました。Slackにはメールを受信してそのままチャンネルへ投稿できるEmailアプリがあり、まずはそれを試してみました。ところが実際に使ってみると、メールがファイルとして表示されてしまったり、メールヘッダーのノイズが目立ったりと、どうにもしっくりきません。そこで「もう少しこなれた仕組みを自分で作ろ