本文へジャンプ

ソフトウェア > Lotus > Lotus Developer Domain > 製品別技術情報 > Lotus Sametime > 

LDD Today

Sametimeボット(bot)を作ってみよう 第1回


Lotus Software
by John W. Rooney and Dick McCarrick
レベル:中級者
対象:Lotus Sametime
原文の掲載:2003年1月2日

LDD Today の原文(US)

インデックス
Sametimeボットとは一体何か?
設計と展開に関する検討事項
「Eightball」サンプル・ボット
Sametimeボット:常に注意を怠らぬ友人

IBM/Lotusより最近発表された、より魅力的な新技術の1つにSametimeボットがあります。これらは、Sametimeの持つ在席管理(Awareness)機能とリアルタイム・コラボレーション機能を有効に活用して、データベースやWebページのようなバックエンド・データ・ソースへの対話型テキスト・ベースのインターフェースを提供するプログラムです。ボットは、要求された情報を見つけ出したり、イベントの時期が近づいたときに通知したり、複数ユーザーのカレンダーから共通して空いている会議時間を探し出すなどの、特定のタスクを実行します。まるで生身の人間であるかのごとく、ボットとオンラインでチャットし、質問できるようなボットを設計することが可能です。

この記事は、Sametimeボットについての2つの話のうちの最初のものです。この記事では、Sametimeボットとは何か、それはどのように機能するのかについて紹介します。次に使用可能なSametimeツールキットを用いて、Sametimeボットを作成する基本的プロセスについて説明します。最後に、変更を加えれば自分用のボットを作成できるような、簡単なボットについて詳細に検討します(このボットのコードはSandbox(US)からダウンロードできます)。

この記事では、読者がSametimeとJavaの経験のあるプログラマーであり、Sametimeに同梱されているデベロッパーズ・ツールキットについてよく知っているということを前提にしています。

Sametimeボットとは一体何か?
ロボット(robot)から来た「ボット」という言葉を聞くと、大きな機械の怪物が無力で哀れな人間たちに大混乱を引き起こす、昔のホラー映画を思い出す人もいるかもしれないということは、まず認めることにしましょう。しかし、ソフトウェアの世界では、ボットとははるかに心優しいものを意味します。あじけない言い方をすれば、ボットとは単にユーザーの命令に基づいた特定の動作を実行するソフトウェア・ツールであると定義できます。たとえば、ボットは要求された情報を見つけ出して取得したり、そうでなければユーザーとユーザーの探しているデータの間を取り持つ仲介者として働いたりするでしょう。ボットはユーザーとリアルタイムに対話したり、あるいは裏方として働いたりできます。

Sametimeにボット技術を応用すると、すぐにも状況が興味深いものになります。たとえば、Sametimeボットでは、現在誰がログインしており、それらユーザーの状態はどうなっているのかなどをSametimeコミュニティー全体にわたり追跡するといった認識技術を使うことができます。さらにボットは、NotesやDB2データベースのようなデータ・ストアにアクセスし、肩書きや専門分野のようなメンバー情報を取得することができます。このことから直ちに多くの応用例を思いつきますが、その中でも、特定の質問に答えられる最適の人物を探すなどといった問題を解決する、非常に魅力的な可能性が思い浮かぶでしょう。

さらに、Sametimeボットはメンバーリスト(Buddy list)にオンラインの人物として表示されます。言い換えれば、ボットが実行されている間、オンライン上でボットはSametimeコミュニティーの同僚であるかのように見えるということです。このことから、ユーザーが実際に対話できる、すなわち自然言語で質問したり、命令したりできるようにボットを設計できるようになります。Sametimeユーザーにとっては、適切に設計されたボットは、いつもそこにいて、超人的なスピードで質問に答え、命令を実行してくれる専門家のように見えるでしょう。ボットには、ユーザーの利用体験を強化するために「個性」を組み込むことさえ可能です(もちろん、単一の目的をこなす単純なボットは、この点で制限されたものになるでしょうが)。

もう1つの重要な点は、Sametimeボットが、あなたやその他のユーザーのオンライン状態を認識できるということです。この認識により、特別なイベントが発生したときにボットがユーザーとチャットを開始できるようになります。この機能により、単純なアプリケーション(たとえば、時間になったら知らせる機能)、あるいはより複雑なアプリケーション(たとえば、出席してほしい3人全員が同時にログインしたらSametime会議を開始する機能)のいずれも設計できます。少し想像力を働かせれば、ログオフしている間に特定の情報を収集し、ログインしたときにそれら情報を送信する、あるいはNotesデータベースのような何か他の特定のアプリケーションにその情報を引き渡すようなボットを作成できます。このSametimeボットの通知機能は、承認待ちの文書があるということをユーザーに知らせるインスタント・メッセージ(電子メールではなく)の即時性を好むワークフロー開発者には魅力的に思われることでしょう。

これらの機能をすべてまとめると、驚くほど高度な対話型アプリケーションが作成できます。たとえば、IBMでは次のような多くのSametimeボットを従業員が使えるようにしています。
  • 特定のユーザーのカレンダーを検索して、全員が空いている会議時間を見つけ出すCalendarボット
  • オンライン辞書から要求された言葉を見つけ出すDictionaryボット
  • 複数のオンライン・ヘルプ・システムにまたがって検索できるようにするHelpボット
  • 時刻またはカレンダー・イベントが発生した際に(たとえば、近々開催される会議や、もうすぐ来る休暇)、ユーザーに通知するRemindMeボット
  • 1つまたはそれ以上の必要な技能を持った他のユーザーを見つけ、そのユーザーに接続するSkillTapボット
  • 任意の株式市場オンライン相場表示から価格情報を取得するStockquoteボット(もちろん、仕事中にこのボットを使うのに長時間を費やしているわけではありません。)
  • IBM略語の定義を教えてくれる(したがって、非常に人気のある)WhatIsボット

これらSametimeボットの若干例を示した中からでも、自分のニーズに合わせられそうなものをいくつか簡単に見つけられたでしょう。たとえば、ヘルプ・ボットは社内サポート・デスクに非常に役に立つかもしれません。ボットは、自然言語構文解析をしてキーワードを見つけ、FAQ(よく尋ねられる質問)の中を探します。次にボットはこれらのキーワードを複数のオンライン・ヘルプ・データベースの中から検索し、ユーザーの質問に最も近い質問を探します。最後にボットは、見つけた質問のリストを該当する回答へのリンクとともに、Sametimeメッセージとしてユーザーに送信します。同様のSametimeボットは、サイトの運用コスト低減の役に立つかもしれません。

他のSametimeボット使用法の可能性には次のようなものがありますが、これに限定されるわけではありません。
  • ユーザーからのメッセージに対する自動応答(特定のユーザーへの特注メッセージの送信も含む)
  • サーバーの発行する警告や、他の一般的通知
  • オフラインのメッセージ配信
  • オンライン会話の取得と保存

SametimeボットはSametimeが使える場所ならどこでも利用可能である、という点に注目する必要があります。たとえば、ちょっとした情報を得るために接触できる、いつもそこにいてくれる「チーム・メンバー」として働くSametimeボットを作成すれば、QuickPlaceを強化できます(もちろんQuickPlaceには独自のPlacebot技術も伴います)。

このセクションの目標は、Sametimeボットの正体、機能の仕方、それを使って行えるいくつかの事柄について基本的な理解を得ることです。ここまでの説明が適切であれば、ここで読者は、自分自身のSametimeボットをどのようにしたら作れるのかをもっと知りたくなることでしょう。
 
上に戻る
 
設計と展開に関する検討事項
本セクションでは、Sametimeボットの設計、プログラム、展開を行う際に検討すべきいくつかの提案をします。

ボットの設計
Sametimeボットの設計に際しては、ユーザーとボットの対話方法の特殊性を考慮すべきです。すでに述べたように、ボットにはSametimeコミュニティーのもう1人のメンバーである生身の人間とオンラインでチャットしているという「感触」を持たせることができます。したがって、ボットのインターフェースは、ボットがどれほどうまくいくかということに関して非常に重要な役割を担う可能性があります。これは、あまり技術の得意でないユーザーが情報を見つけるのを手伝うために設計されるボットでは特に当てはまります。

したがって、Sametimeボットを計画するときには、ボットが認識し、受け入れるキーワードと動詞について検討します。ユーザーにとって会話しているように感じられる自然言語インターフェースにこれらの言葉を取り込めるのが理想です。ボットがどのようにユーザーに対して応答するかも心に留めてください。メッセージは解読しなければならないような、わかりにくい英数文字列ではなく、完全な文章として読めるものでなければなりません。慎重に作られた「自然な」インターフェースはボット開発の時間と複雑さを増すかもしれませんが、ユーザーが快適に感じられるようにするためには努力する価値があります。 ボットのプログラミング

ボットを作成するには、Sametimeデベロッパーズ・ツールキットを使います。Sametimeツールキットは、クライアントとサーバーの2つの種類に分けられます。クライアント・ツールキットは主にユーザーと直接対話し、サーバー・ツールキットはサーバー上で実行され、バックグラウンドのサービスを提供します。Sametimeボットを作成するためには、以下のどのツールキットを使ってもかまいません。
  • (クライアント)Java、C++、およびCOM
  • (サーバー)Community Server

これらのツールキットやその他のSametimeツールキットの詳細については、LDD Todayの記事「A tour of Sametime toolkits」(US)を参照してください。Documentation LibraryからダウンロードできるSametime toolkit documentation(US)で調べることもできます。

ボットの展開
Sametimeボットは通常スタンドアロン・アプリケーションとして実行されますが、サーブレットやDominoのエージェントとして実行することもできます。ボットはクライアント上かサーバー上のいずれかで実行できます。おそらくクライアント上で実行するほうがより一般的ですが、サーバー上で実行するボットのほうが複数のアドミニストレーターからアクセスしやすくなります(したがって、全Sametimeコミュニティーに一般的な通知やメッセージを送るにはより役に立つかもしれません)。

Sametimeサーバーにとって、ボットは通常「単なる一ユーザー」として捉えられます。これは、ボットがログインする際に、有効なユーザー名とパスワードが提示されるものとサーバーが想定することを意味します。次にサーバーはこれらの証明書を、個人ディレクトリー、すなわちDomino DirectoryかLDAPディレクトリーのいずれかにより認証します。ユーザー名とパスワード情報は、ボットを起動する際にパラメーターとして与えられます。たとえば、ボット名 ユーザー名 パスワード のようにです。これはもちろん、与えたユーザー名とパスワードの組み合わせが、Sametimeサーバーの使用するLDAPあるいはDomino Directoryに存在しなければならないことを意味します。(ボットを起動するときに、ユーザーは単にユーザー自身の名前とパスワードを入力することが多いでしょう。するとボットはそれを起動したユーザーの権限の下で実行されます。)

特定の日付または時刻、あるいは他のトリガーとなるイベントが到来したときに自動的に起動されるSametimeボットについては、セキュリティーがもう少し複雑になる可能性があります。この場合、ボットは人間の介在なしにユーザー名とパスワードをSametimeサーバーに渡さなければなりません。ボットがアクセスしてサーバーに渡せるように、この情報はコードあるいはファイルの中に保存できます。この場合、資格のないユーザーがこの証明書情報にアクセスできないように、確実に設定しなければなりません。
 
上に戻る
 
「Eightball」サンプル・ボット
それでは、Sametimeボットの例に目を向けてみましょう。このボットはSandboxからダウンロードできます。ユーザーの質問にランダムなメッセージで回答するので、このボットを「Eightball」ボットと名付けました。確かに、現在のままではこのボットには実際のSametime環境でほとんど使い道がありません(時間が有り余ってしょうがないというなら別ですが)。しかし、以下のようなことを行うボットをプログラミングする方法を示すのに、Eightballは非常に便利です。
  • Sametimeサーバーにログインする
  • 入ってくるユーザー・メッセージをリッスンする
  • ユーザー・メッセージに応答する(この例ではランダムな応答をしますが、作ろうとしている実際の実働ボットでは、ユーザーの質問を解析し、適切な応答や動作を選択する論理を組み込むことになるでしょう)

本セクションでは、はじめにこのボットを作成するために使ったSametime Javaツールキットについて簡単に概観します。次に、各コードのブロックが何をしているのかを説明しながら、ボットについて詳しく調べていきます(この時点では、議論がかなり技術的なものになるので、Javaプログラミングに関する深い理解が不可欠となります)。

Sametime Javaツールキット
コードの中身にとりかかる前に、このSametimeボットの例を作成するために用いたSametime Javaツールキットについて、いくつかのことを知っておく必要があります。この例では、次の3つの重要なツールキットの領域を使います。
  • Sametimeオブジェクト
  • Sametimeサービスとコンポーネント
  • リスナー

次のセクションで、これら各項目について簡単に説明します。Sametime Javaツールキットに関する完全な詳細情報については、Sametime Java Toolkit Developer's Guide(US)を参照してください。

Sametimeオブジェクト
Sametime Javaツールキットは、オブジェクト指向APIを開発者に公開しています。このタイプのAPIは、Javaプログラマーにとっては非常に馴染み深いもののはずです。Sametimeサーバーやツールキットによって提供される多くのサービスを使用するには、特定のオブジェクトを作成する必要があります。たとえば、STSessionオブジェクトは、Sametimeセッションに関連する一連のコンポーネントを含んでいます。各コンポーネントは、Sametimeサーバーの提供する機能(インスタント・メッセージングや認識)に関係しています。コンポーネント機能をアプリケーションにロードするには、STSessionオブジェクトのインスタンスを作成しなければなりません。

Sametimeサービスとコンポーネント
Sametime Javaツールキットには、Sametimeサーバーによって提供される独自のサービスにアクセスするためのコンポーネントが含まれます。これらのサービスには次のようなものがあります。
  • Sametimeサーバーへのログインやログアウト、ユーザー状態の設定などの機能の実行を可能にするCommunity Service
  • ユーザーがメッセージ(テキストやバイナリー)を送れるようにするInstant Messaging Service
  • ユーザーやグループに関する情報のサーバーへの問い合わせを可能にし、関連するSTObject(STUserまたはSTGroup)を返すLookup Service
  • 仮想空間(n人参加のチャットのようなもの)を定義し、ユーザーの参加を促すことができるPlaces Service
今回の例で使うサービスは、Community Serviceだけです。

必要なコンポーネントをアプリケーションにロードするにはいくつかの方法があります。最も簡単な方法は、STSessionオブジェクトのloadAllComponentsまたはloadSemanticComponentsメソッドのいずれかを使うものです。loadComponentsメソッドを使い、アクセスしたいコンポーネントのリストを渡すことで、コンポーネントを1つずつロードすることもできます。

該当するコンポーネントをロードしたら、そのサービスを使用するためにそれぞれのAPIへの参照を取得する必要があります。これは、STSession.getCompAPI()メソッドによって行えます。たとえば、InstantMessagingServiceのAPIにアクセスしたいのであれば、以下のようなコードを使います。

s = (InstantMessagingService)session.getCompApi(InstantMessaging
Service.COMP_NAME);

ここでsはサービスAPIへの参照を格納した変数の名前であり、sessionは現在のSTSessionオブジェクトへの参照を格納した変数の名前です。

STSessionはコンポーネントの相違を見分けられないので、返された参照を正しいタイプ(この例ではInstantMessagingService)にキャストしなければなりません。この形はSametimeツールキットのどのコンポーネントAPIへの参照を取得するのにも使えます。

リスナー
APIとSametime Javaツールキットのサービスは非同期です。これは、サーバーからのイベントを受信するためにリスナーを設定する必要があるということを意味します。したがって、(ログインのような)サーバー上の機能を呼び出したとき、サーバーが応答するまでに遅延があるかもしれません。インスタント・メッセージングの世界では予想されることですが、サーバーからのイベント(新しいメッセージや特定ユーザーの状態変化に関するものなど)はランダムな時刻に受信されるでしょう。リスナーを使用すると、ユーザーに関係があるイベントがサーバーによって通知され、これらのイベントに対する応答動作の実行が可能になります。

前述したように、サービスの多くはその機能を使用するためにヘルパー・オブジェクトを必要とします。サービスの中には(InstantMessagingServiceのように)、ヘルパー・オブジェクトをイベントの中で直接返すものもあります。たとえば、IM(インスタント・メッセージング)オブジェクトを直接作成するために、createIM()メソッドを使うこともできますが、imReceived()イベント・ハンドラーはイベントがトリガーされたときにIMオブジェクトを返します。後者の方法をEightballボットの例で示します。

Eightballボットのコード
このセクションでは、Sametimeボットのデモ、Eightballのコードを吟味します。このボットはSandboxからダウンロードできます。
コードの最初のセクションでは、ボットの機能を提供するために必要なさまざまなパッケージをツールキットからインポートします。また、ランダムな応答の生成のためにjava.util.*もインポートします。

/* Sametime Bot Sample

import com.lotus.sametime.awareness.*;
import com.lotus.sametime.community.*;
import com.lotus.sametime.core.comparch.*;
import com.lotus.sametime.core.constants.*;
import com.lotus.sametime.core.types.*;
import com.lotus.sametime.im.*;
import java.util.*;

中核となるEightBallBotクラスでは、設定しようとしているリスナーを識別する必要があります。この場合は、リスナーをログイン・イベントとインスタント・メッセージングに関連するイベントに登録します。

public class EightBallBot implements Runnable, LoginListener,
ImServiceListener, ImListener {

CommunityService commService;
Thread engine;
InstantMessagingService imService;
STSession stsession;
//responses holds the array of random answers to user inquiries
String [] responses = { "Yes", "No",
"Maybe",
"Doesn't look good",
"Try again",
"Answer hazy"};

通常は、Sametimeアプリケーションは唯一のSTSessionオブジェクトを持ちます。しかし、複数のセッションが存在する場合もあるので、各STSessionは静的セッション・テーブルに格納された名前を持ちます。いかなるアプリケーションにおいても、あるセッション名に対してはただ1つのセッションしか許されません。そのため、下記のように、セッションを生成するコードをtry/catchステートメントで囲む必要があります。

public EightBallBot(String serverName, String userId, String password) {
try {
stsession = new STSession("EightBallSession");
} catch (DuplicateObjectException e) {
e.printStackTrace();
return;
}

セッションを生成すると、必要なコンポーネントをロードできるようになります。この例では、単にすべてのセマンティック(非UI)コンポーネントをロードし、セッションを開始します。SametimeサーバーにログインするためにCommunityService APIを用いるので、前述のメソッドを使って、このAPIへの参照を取得する必要があります。この参照を取得したら、ログインに関連するイベントを受け取るリスナーを追加し、loginByPasswordメソッドによりサーバーへのログインを試みます。

stsession.loadSemanticComponents();
stsession.start();
commService = (CommunityService)stsession.getCompApi
(CommunityService.COMP_NAME);
commService.addLoginListener(this);
commService.loginByPassword(serverName, userId, password);

}

LoginListenerのようなリスナー・インターフェースを設定した場合は、処理しなければならないある種のイベント(この例では、loggedIn()およびloggedOut()イベント)があります。適切なIDEなら、これら必要なイベントのスタブを自動的に追加します。サーバーへのログインに成功すると、loggedIn()イベントを受け取ります。このハンドラーの中で、InstantMessagingServiceへの参照を要求し、アプリケーションをチャット・メッセージ受信のために登録できます。registerImType()メソッドを用いて、受信したいメッセージのタイプを示します(これは非常に重要なステップです)。デフォルトでは、登録されたIMタイプでないメッセージをInstantMessagingServiceはすべて拒否します。次に、入ってくるインスタント・メッセージすべてを受信するために、下記に示すとおりリスナーにimService.addIMServiceListener(this)を追加します。

public void loggedIn(LoginEvent e) {
imService = (InstantMessagingService)stsession.getCompApi
(InstantMessagingService.COMP_NAME);
imService.registerImType(ImTypes.IM_TYPE_CHAT);
imService.addImServiceListener(this);
}
public void loggedOut(LoginEvent e) {}

ユーザーがボットとの会話を開始すると、imServiceListenerはimReceived()イベントを起動し、IMオブジェクトを受け渡します。このイベントは、ユーザーが仲間リスト上のボットIDをダブルクリックするや否や起動されます。他のIBM内のボットの多くで、このイベント(および関連するIMオブジェクトのプロパティーとメソッド)を即時にユーザーに応答するために使っています。この応答には次のようなものがあります。
  • ようこそメッセージ
  • ヘルプ・テキスト
  • ユーザー固有の個人向け情報

たとえば、ユーザーのポートフォリオ内にある株の現在取引価格を提供するように設計されたボットでは、ユーザーに情報を即座に返すためにこのイベントが使えます。
ユーザーから引き続きメッセージを受信するには、e.getIM().addIMListener(this)を使って、ImListenerを追加しなければなりません。この例の内容は以下のとおりです。
  • eはイベントによって返され、コンタクトしてきたユーザーに対して開始したIMセッションを参照します。
  • getIM()は、このイベントに関連するIMオブジェクトを取得するために使用するメソッドです。
  • addIMListener()は、このセッション内でさらにやって来るメッセージをリッスンするために使われるIMオブジェクト上のメソッドです。

コードは以下のようになります。

public void imReceived(ImEvent e) {
e.getIm().addImListener(this);
}

IMListenerインターフェースを実装する際には、以下のメソッドが必要になります。

The following methods are required when you implement the IMListener interface:

public void dataReceived(ImEvent e) {}
public void imClosed(ImEvent e) {}
public void imOpened(ImEvent e) {}
public void openImFailed(ImEvent e) {}

この例では、ユーザーからテキストを受信したときに起動されるイベントに注目します。しかし、Sametimeはバイナリー・データを送信することにも使えることに注意してください。Sametimeのユーザー・コミュニティーで使用されているクライアントを掌握しているなら(あるいはメッセージを処理するために設計された特注アプリケーション間のメッセージングを扱っているなら)、IMチャネルをバイナリー・データの送受信に使うのは非常に強力です。

すでに述べたように、このボットはユーザーの質問に対してランダムなメッセージを返すことだけを目的にしています。したがって、ユーザーのメッセージの中身には特に興味はありませんが、たいていのボットではメッセージから内容を引き出して、その内容に従って、適切な応答を選択したり、他の機能(データベースへのクエリーなど)を実行する必要があります。ユーザーがEightballにテキストのメッセージを送信すると、textReceived()イベントが起動します。IMEventのgetText()メソッドを使ってメッセージの内容を構文解析できます。たとえば、ボットが部品情報を格納したデータベースへのインターフェースを提供すると仮定します。getText()メソッドを使ってユーザーが要求している部品番号を決定し、メッセージから部品番号を解析抽出し、データベースの中から部品情報を引き出すための適切な機能を呼び出すことができます。今回のコードでは、単にユーザーへのランダムな応答を生成し、sendText()メソッドを使ってメッセージを送信するだけです。

public void textReceived(ImEvent e) {
Random rnums = new Random();
int item = rnums.nextInt(responses.length);
e.getIm().sendText(true, responses[item]);
}
public void serviceAvailable(AwarenessServiceEvent e) {}
public void serviceUnavailable(AwarenessServiceEvent e) {}
public void start() {
if (engine == null) { engine = new Thread(this, "EightBallThread");
engine.start(); }
}
public void run() {
Thread myThread = Thread.currentThread();
while (engine == myThread) { try { Thread.sleep(1000); } catch (InterruptedException e) {} }
}
public static void main(String[] args) {
EightBallBot ebb = new EightBallBot("<server name>", "<user ID>", "<password>");
ebb.start();
}

}

すでに述べたように、EightballはSametimeボットの最も高度なものではありません。しかし、ログイン、ユーザー・メッセージのリッスンとメッセージへの応答など、ほとんどすべての対話型ボットに使用されると言ってもよい、いくつかの重要なタスクについてのわかりやすい説明例となっています。この記事の第2回では、はるかに複雑ですぐに使えるSametimeボットについて述べます。
 
上に戻る
 
Sametimeボット:常に注意を怠らぬ友人
このSametimeボットに関する紹介記事を締めくくるにあたって、以下のいくつかの重要な点を示しておきたいと思います。
  • ボットはインスタント・メッセージングをチャットを超えたものにするための第一歩です。

情報を得るためにSametimeコミュニティーを利用する価値は明らかです(筆者はこの記事を書いている間にも頻繁にこれを実行しました)。しかし、必要とされる人はその時オンライン状態でないかもしれず、あるいは答えを知らないかもしれません。あるいは、その人をそれほどたびたび煩わせることに罪悪感を覚えるかもしれません。これに対して、適切に設計されたSametimeボットは、いつでも使用でき、質問に対する答えも知っており、どんなにたびたび煩わされてもいらいらしません。
  • ボットはデータに対する単純で便利なインターフェースを提供します。

質問が発生するたびに、すべての人が、使用可能な全社内データを調べ通せるわけではありませんし、したいとも思わないでしょう。Sametimeボットなら、同僚に調査を頼んだときのような感覚で、あなたの代わりにこの仕事をすばやく実行し、明確な結果を返してくれます。
  • ボットは双方向の対話を可能にします。

ユーザーは、情報提供やタスクの実行が必要になったときにSametimeボットとのコミュニケーションを開始できます。逆に、何かトリガーとなるイベントが発生すると、ボットのほうからあなたにコンタクトできます。この点から、ボットは仮想アシスタントとして働くとも言え、自分では忙しくてできない仕事や状況の監視を代わりにしてくれます。
  • ボットはワークフローやビジネス・プロセスにリアルタイム活動をもたらします。

はじめに述べたように、Sametimeボットは、時間が特に重要なワークフロー・プロセスにおいて、電子メールに代わる、より速くリアルタイムに動作するサービスを提供します。

この記事ではSametimeボットを紹介しました。ボットとは何か、何をするのか、どのように使うのかについて説明しました。自分のSametimeボットを設計し展開する際に検討してもらうために、いくつかの背景説明と提言をしました。そして単純なデモ・ボットを示し、コードが何をしているのか、読者自身のサイトで実際のボットを作成する際にどのように適合できるのかについて説明しました。

この記事がお役に立つものと思います。今後の記事では、ここIBMで使っている本物の動くボットのコードも含め、Sametimeボットのより詳細な使用例について説明する予定です。引き続きご覧ください。



筆者について
John W. Rooneyは、IBMのインターネット技術開発部門マネージャーです。Rooney(友達は彼をそう呼びますが)と彼のWebaheadチームは、いくつかのSametimeボット技術に大きく依存しているものを含め、IBM内で広く使われているさまざまなアプリケーションを開発してきました。
 
上に戻る