Level up your Twilio API skills in TwilioQuest, an educational game for Mac, Windows, and Linux. Download Now

メニュー

Expand
Rate this page:

Thanks for rating this page!

We are always striving to improve our documentation quality, and your feedback is valuable to us. How could this documentation serve you better?

Chat with Java and Servlets

Ready to implement a chat application using Twilio Programmable Chat Client?

This application allows users to exchange messages through different channels, using the Twilio Programmable Chat API. On this example, we'll show how to use this API capabilities to manage channels and their usages.

Properatiは不動産の買い手と売り手をリアルタイムにつなぐ手助けをするモバイルメッセージングAppを構築しました。 さらに詳しく。

For your convenience, we consolidated the source code for this tutorial in a single GitHub repository. Feel free to clone it and tweak as required.

はじめましょう!

Generate the Token

In order to create a Twilio Programmable Chat client, you will need an access token. This token holds information about your Twilio Account and Chat API keys.

新しい AccessToken を作成し、これに ChatGrant を提供することにより、このトークンを生成します。 AccessToken がある場合は、そのメソッド ToJWT() を使用して、その文字列表現を返すことができます。

        
        
        
        
        src/main/java/com/twilio/chat/TwilioTokenCreator.java

        アクセストークンを生成する

        src/main/java/com/twilio/chat/TwilioTokenCreator.java

        We can generate a token, now we need a way for the chat app to get it.

        トークン生成コントローラー

        トークン生成コントローラー

        コントローラーで、有効なトークンの提供を行うエンドポイントを明らかにできます。パラメーターとして提供された情報を使用して以下を行います。

        • device:使用しているデバイスを識別します。
        • identity:ユーザー自身を識別します。

        tokenGenerator.Generate メソッドを使用して新しいトークンを入手し、クライアントに対して使用される JSON フォーマットでトークンを返します。

              
              
              
              
              src/main/java/com/twilio/chat/TokenServlet.java

              トークン生成コントローラー

              src/main/java/com/twilio/chat/TokenServlet.java

              Now that we have a route that generates JWT tokens on demand, let's use this route to initialize our Twilio Chat Client.

              Chatクライアントを初期化する

              Programmable Chatクライアントを初期化する

              クライアントで、エンドポイントに対する POST リクエストを使用して新しいトークンを取得します。

              With the token we can create a new Twilio.AccessManager, and initialize our Twilio.Chat.Client.

                    
                    
                    
                    
                    src/main/webapp/js/twiliochat.js

                    Chatクライアントを初期化する

                    src/main/webapp/js/twiliochat.js

                    Now that we've initialized our Chat Client, lets see how we can get a list of channels.

                    Channel一覧を取得する

                    Channel一覧を取得する

                    After initializing the client, we can call its method getPublicChannelDescriptors to retrieve all visible channels. The method returns a promise which we use to show the list of channels retrieved on the UI.

                          
                          
                          
                          
                          src/main/webapp/js/twiliochat.js

                          Channel一覧を取得する

                          src/main/webapp/js/twiliochat.js

                          Next, we need a default channel.

                          一般チャンネルに参加する

                          一般チャンネルに参加する

                          This application will try to join a channel called "General Channel" when it starts. If the channel doesn't exist, we'll create one with that name. The scope of this example application will show you how to work only with public channels, but the Programmable Chat client allows you to create private channels and handles invitations.

                          アプリケーションを起動するたびに一般チャンネルを新たに作成したいわけではないので、一般チャンネルに一意の名前を設定します。

                                
                                
                                
                                
                                src/main/webapp/js/twiliochat.js

                                一般チャンネルに参加する

                                src/main/webapp/js/twiliochat.js

                                ここで、Channelイベントをいくつかリッスンしてみましょう。

                                チャンネルイベントをリスニングする

                                チャンネルイベントをリスニングする

                                続いて、Channelイベントをリッスンします。 今回は、以下のイベントにリスナーを設定します:

                                • messageAdded:接続しているチャンネルに他のメンバーがメッセージを送信する場合。
                                • typingStarted:接続しているチャンネルで他のメンバーがメッセージを入力している場合。
                                • typingEnded:接続しているチャンネルで他のメンバーがメッセージの入力を中止した場合。
                                • memberJoined:接続しているチャンネルに他のメンバーが参加する場合。
                                • memberLeft:接続しているチャンネルから他のメンバーが退出する場合。

                                個々のイベントを処理するためにそれぞれの関数を登録します。

                                      
                                      
                                      
                                      
                                      src/main/webapp/js/twiliochat.js

                                      チャンネルイベントをリスニングする

                                      src/main/webapp/js/twiliochat.js

                                      クライアントも同様にイベントを生成します。 このイベントを同様にリッスンできるようにする方法を見ていきましょう。

                                      クライアントイベントをリスニングする

                                      クライアントイベントをリスニングする

                                      Just like with channels, we can register handlers for events on the Client:

                                      • channelAdded:チャンネルがクライアントに表示されるようになった場合。
                                      • channelRemoved:チャンネルがクライアントに表示されなくなった場合。
                                      • tokenExpired:提供されたトークンの有効期限が切れた場合。
                                            
                                            
                                            
                                            
                                            src/main/webapp/js/twiliochat.js

                                            ここで実際のチャットアプリケーションが用意できましたが、複数Channelを使用してもっと面白いものを作ってみましょう。

                                            チャンネルを作成する

                                            チャンネルを作成する

                                            ユーザーが「+ Channel」リンクをクリックすると、新規のChannel名を入力できるテキストフィールドが表示されます。 チャンネルの作成は friendlyName キーを持つオブジェクトを使用してcreateChannel を呼び出すのと同じくらい簡単です。Programmable ChatドキュメントのChannelセクションで一覧されている追加のオプションを伴ってChannelを作成できます。

                                                  
                                                  
                                                  
                                                  
                                                  src/main/webapp/js/twiliochat.js

                                                  チャンネルを作成する

                                                  src/main/webapp/js/twiliochat.js

                                                  続いて、Channel間を切り替える方法を見ていきましょう。

                                                  他のChannelに参加する

                                                  他のChannelに参加する

                                                  サイドバーからチャンネルの名前をタップすると、そのチャンネルが selectedChannel として設定されます。selectChannel メソッドは選択したチャンネルへの参加および selectedChannel の設定を行います。

                                                        
                                                        
                                                        
                                                        
                                                        src/main/webapp/js/twiliochat.js

                                                        他のChannelに参加する

                                                        src/main/webapp/js/twiliochat.js

                                                        いつか、ユーザーはChannelを削除したいと思うでしょう。 これを行う方法を見ていきましょう。

                                                        チャンネルを削除する

                                                        チャンネルを削除する

                                                        チャネルの削除は、追加よりも簡単です。 アプリケーションは、"delete current channel"リンクによって、ユーザーにチャネルを削除できるようにします。Twilioから実際にChannelを削除するのに必要なことは、削除しようとしているChannelのdeleteメソッドを呼ぶことだけです。 Channelオブジェクトの他のメソッドと同様、successハンドラーを設定できるプロミスを返します。