(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-12-05
(45)【発行日】2022-12-13
(54)【発明の名称】情報処理装置及びプログラム
(51)【国際特許分類】
G06F 3/12 20060101AFI20221206BHJP
【FI】
G06F3/12 331
G06F3/12 303
G06F3/12 385
(21)【出願番号】P 2018204121
(22)【出願日】2018-10-30
【審査請求日】2021-09-17
(73)【特許権者】
【識別番号】000005496
【氏名又は名称】富士フイルムビジネスイノベーション株式会社
(74)【代理人】
【識別番号】110001210
【氏名又は名称】弁理士法人YKI国際特許事務所
(72)【発明者】
【氏名】三觜 裕之
(72)【発明者】
【氏名】杉本 英明
(72)【発明者】
【氏名】野口 希
(72)【発明者】
【氏名】宮田 茂郎
(72)【発明者】
【氏名】三島 悠
【審査官】松浦 かおり
(56)【参考文献】
【文献】特開2019-207513(JP,A)
【文献】特開2015-82311(JP,A)
【文献】特開2014-106915(JP,A)
【文献】特開2011-180955(JP,A)
【文献】特開2015-108950(JP,A)
【文献】米国特許出願公開第2017/0012950(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 3/09- 3/12
B41J 29/00-29/70
H03J 9/00- 9/06
H04L 51/00-51/58
H04L 67/00-67/75
H04N 1/00
H04Q 9/00- 9/16
(57)【特許請求の範囲】
【請求項1】
チャットルームに対するユーザからの出力指示及び出力対象の投稿を検知する手段と、
前記出力対象の投稿が検知されたときに、前記ユーザ又は前記チャットルームに出力機器の識別情報が登録されていない場合は前記出力対象を前記ユーザ又は前記チャットルームに対応する出力対象として登録する登録手段と、
前記出力指示の投稿が検知されたときに、前記ユーザ又は前記チャットルームに出力機器の識別情報が登録されていない場合は
、出力機器の
識別情報の登録を前記ユーザに要求する投稿を前記チャットルームに入力する制御を行う制御手段と、
を含む情報処理装置。
【請求項2】
前記出力機器の
識別情報の登録を前記ユーザに要求する投稿の後、前記ユーザから出力機器の識別情報を含む投稿が前記チャットルームに入力された場合、その識別情報を前記ユーザ又は前記チャットルームに対応する前記出力機器の識別情報として登録する登録手段と、
前記ユーザからの前記出力指示に応じて、前記出力機器に対して前記出力対象の出力を指示する出力指示手段と、
を更に含む、請求項1に記載の情報処理装置。
【請求項3】
前記登録手段は、
前記ユーザからの投稿に含まれる前記識別情報に対応する出力機器がネットワーク経由で前記情報処理装置から利用可能か否かを確認する手段と、
前記確認により前記出力機器が利用可能でないと分かった場合に、前記ユーザに対して前記出力機器の状態の確認を求める旨の投稿を前記チャットルームに入力する手段と、
を含む、請求項2に記載の情報処理装置。
【請求項4】
前記登録手段は、前記ユーザからの投稿に含まれる前記識別情報が別のユーザに対応する出力機器の識別情報として登録されている場合に、前記別のユーザに対する前記識別情報の登録が解除されるのを待ってから、前記識別情報を前記ユーザに対応する前記出力機器の識別情報として登録する、ことを特徴とする請求項1~3のいずれか1項に記載の情報処理装置。
【請求項5】
ユーザから前記チャットルームに入力された投稿にコード画像が含まれる場合、そのコード画像をデコードし、そのデコード結果が出力機器の識別情報を示す場合に、その識別情報を前記ユーザ又は前記チャットルームに対応する前記出力機器の識別情報として登録する第2の登録手段、を更に含む、請求項1~4のいずれか1項に記載の情報処理装置。
【請求項6】
前記第2の登録手段は、
前記ユーザからの投稿に含まれる前記識別情報に対応する出力機器がネットワーク経由で前記情報処理装置から利用可能か否かを確認する手段と、
前記確認により前記出力機器が利用可能でないと分かった場合に、前記ユーザに対して前記出力機器の状態の確認を求める旨の投稿を前記チャットルームに入力する手段と、
を含む、請求項5に記載の情報処理装置。
【請求項7】
前記ユーザ又は前記チャットルームに対応付けて前記識別情報が登録された後、所定の解除条件が満たされると、前記ユーザから明示的な解除指示がなくても、前記ユーザ又は前記チャットルームに対応付けた前記識別情報の登録を解除する登録解除手段、を更に含む、請求項1~6のいずれか1項に記載の情報処理装置。
【請求項8】
前記解除条件は、前記ユーザが前記チャットルームから退出したこと、前記情報処理装置が前記チャットルームから退出させられたこと、前記出力指示の投稿がない状態が所定時間以上続いたこと、のうちの少なくとも一つである、請求項7に記載の情報処理装置。
【請求項9】
前記出力機器の前記識別情報がグループチャットのための前記チャットルームに対応付けて登録された場合、前記ユーザが前記チャットルームから退出したことは前記解除条件とはせず、前記チャットルームに参加していた人が全員前記チャットルームから退出したことを前記解除条件とする、請求項7又は8に記載の情報処理装置。
【請求項10】
前記登録解除手段により登録が解除された前記識別情報を記憶する記憶手段と、
前記ユーザが前記チャットルームに入室した後、前記記憶手段に記憶された前記識別情報に対応する前記出力機器を利用することの提案を示す投稿を前記チャットルームに入力し、前記ユーザから前記提案を受け入れる旨の投稿が前記チャットルームに投稿された場合、前記記憶手段に記憶された前記識別情報を、前記ユーザ又は前記チャットルームに対応する前記出力機器の識別情報として登録する手段と、
を更に含む請求項7~9のいずれか1項に記載の情報処理装置。
【請求項11】
コンピュータを、
チャットルームに対するユーザからの出力指示及び出力対象の投稿を検知する手段、
前記出力対象の投稿が検知されたときに、前記ユーザ又は前記チャットルームに出力機器の識別情報が登録されていない場合は前記出力対象を前記ユーザ又は前記チャットルームに対応する出力対象として登録する登録手段、
前記出力指示の投稿が検知されたときに、前記ユーザ又は前記チャットルームに出力機器の識別情報が登録されていない場合は
、出力機器の
識別情報の登録を前記ユーザに要求する投稿を前記チャットルームに入力する制御を行う制御手段、
として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置及びプログラムに関する。
【背景技術】
【0002】
チャット上でのユーザの投稿に含まれるデータを受け取り、そのデータに対して特定の処理を行うソフトウエアロボット(以下、チャットボット)がある。
【0003】
チャットボットの中には、チャットルーム上にユーザが投稿した印刷対象の文書や印刷指示を検知し、その所定の印刷装置に送って印刷させるものなど、チャットルーム上のユーザの投稿に従って外部の出力機器を操作するものがある。この種のチャットボットには予め出力機器が登録されており、チャットボットは、チャットルームに投稿されたユーザの指示に応じてその登録されている出力機器を操作する。
【0004】
特許文献1には、時系列でメッセージを表示するサービスにおいて、ユーザからのメッセージにより外部機器を動作させ、動作結果を、指示ユーザを宛先としたメッセージで表示することが開示されている。
【0005】
特許文献2には、インターネット上にプリントサーバおよびプリンタが配置されたネットワークプリントシステムにおいて、イントラネット上に文書管理サーバを配置し、インターネット上に中継サーバを配置することが開示されている。文書管理サーバは、利用者から特定の文書データについての印刷指示を受けると、該文書データを中継サーバに転送する。中継サーバは、転送された文書データを文書特定情報で特定可能に保存する。プリントサーバは、文書特定情報の通知を受け、該文書特定情報をもとに中継サーバから文書データを取得してプリンタに印刷させる。
【先行技術文献】
【特許文献】
【0006】
【文献】特開2014-164522号公報
【文献】特開2007-004217号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
チャットボット等の情報処理装置に対して出力機器が登録されていない状態で、チャットルームに対してユーザから出力対象となるべきデータ(例えば印刷対象の画像)が投稿された場合、従来のその種の情報処理装置は、そのデータを出力対象と認識しなかったり、出力できなかったりというように、その投稿自体はエラーとなってしまう。その後情報処理装置に出力機器が登録された後で、再度その出力対象を投稿しないと、その出力対象をその出力機器から出力することができない。
【0008】
本発明は、出力機器の識別情報の登録がある前にチャットルームに投稿された出力対象がエラーとなることなく、出力機器が登録されたらその出力機器から出力されるよう制御可能な情報処理装置を提供する。
【課題を解決するための手段】
【0009】
請求項1に係る発明は、チャットルームに対するユーザからの出力指示及び出力対象の投稿を検知する手段と、前記出力対象の投稿が検知されたときに、前記ユーザ又は前記チャットルームに出力機器の識別情報が登録されていない場合は前記出力対象を前記ユーザ又は前記チャットルームに対応する出力対象として登録する登録手段と、前記出力指示の投稿が検知されたときに、前記ユーザ又は前記チャットルームに出力機器の識別情報が登録されていない場合は、出力機器の識別情報の登録を前記ユーザに要求する投稿を前記チャットルームに入力する制御を行う制御手段と、を含む情報処理装置である。
【0010】
請求項2に係る発明は、前記出力機器の識別情報の登録を前記ユーザに要求する投稿の後、前記ユーザから出力機器の識別情報を含む投稿が前記チャットルームに入力された場合、その識別情報を前記ユーザ又は前記チャットルームに対応する前記出力機器の識別情報として登録する登録手段と、前記ユーザからの前記出力指示に応じて、前記出力機器に対して前記出力対象の出力を指示する出力指示手段と、更に含む、請求項1に記載の情報処理装置である。
【0011】
請求項3に係る発明は、前記登録手段は、前記ユーザからの投稿に含まれる前記識別情報に対応する出力機器がネットワーク経由で前記情報処理装置から利用可能か否かを確認する手段と、前記確認により前記出力機器が利用可能でないと分かった場合に、前記ユーザに対して前記出力機器の状態の確認を求める旨の投稿を前記チャットルームに入力する手段と、を含む、請求項2に記載の情報処理装置である。
【0012】
請求項4に係る発明は、前記登録手段は、前記ユーザからの投稿に含まれる前記識別情報が別のユーザに対応する出力機器の識別情報として登録されている場合に、前記別のユーザに対する前記識別情報の登録が解除されるのを待ってから、前記識別情報を前記ユーザに対応する前記出力機器の識別情報として登録する、ことを特徴とする請求項1~3のいずれか1項に記載の情報処理装置である。
【0013】
請求項5に係る発明は、ユーザから前記チャットルームに入力された投稿にコード画像が含まれる場合、そのコード画像をデコードし、そのデコード結果が出力機器の識別情報を示す場合に、その識別情報を前記ユーザ又は前記チャットルームに対応する前記出力機器の識別情報として登録する第2の登録手段、を更に含む、請求項1~4のいずれか1項に記載の情報処理装置である。
【0014】
請求項6に係る発明は、前記第2の登録手段は、前記ユーザからの投稿に含まれる前記識別情報に対応する出力機器がネットワーク経由で前記情報処理装置から利用可能か否かを確認する手段と、前記確認により前記出力機器が利用可能でないと分かった場合に、前記ユーザに対して前記出力機器の状態の確認を求める旨の投稿を前記チャットルームに入力する手段と、を含む、請求項5に記載の情報処理装置。
【0015】
請求項7に係る発明は、前記ユーザ又は前記チャットルームに対応付けて前記識別情報が登録された後、所定の解除条件が満たされると、前記ユーザから明示的な解除指示がなくても、前記ユーザ又は前記チャットルームに対応付けた前記識別情報の登録を解除する登録解除手段、を更に含む、請求項1~6のいずれか1項に記載の情報処理装置である。
【0016】
請求項8に係る発明は、前記解除条件は、前記ユーザが前記チャットルームから退出したこと、前記情報処理装置が前記チャットルームから退出させられたこと、前記出力指示の投稿がない状態が所定時間以上続いたこと、のうちの少なくとも一つである、請求項7に記載の情報処理装置である。
【0017】
請求項9に係る発明は、前記出力機器の前記識別情報がグループチャットのための前記チャットルームに対応付けて登録された場合、前記ユーザが前記チャットルームから退出したことは前記解除条件とはせず、前記チャットルームに参加していた人が全員前記チャットルームから退出したことを前記解除条件とする、請求項7又は8に記載の情報処理装置である。
【0018】
請求項10に係る発明は、前記登録解除手段により登録が解除された前記識別情報を記憶する記憶手段と、前記ユーザが前記チャットルームに入室した後、前記記憶手段に記憶された前記識別情報に対応する前記出力機器を利用することの提案を示す投稿を前記チャットルームに入力し、前記ユーザから前記提案を受け入れる旨の投稿が前記チャットルームに投稿された場合、前記記憶手段に記憶された前記識別情報を、前記ユーザ又は前記チャットルームに対応する前記出力機器の識別情報として登録する手段と、を更に含む請求項7~9のいずれか1項に記載の情報処理装置である。
【0019】
請求項11に係る発明は、コンピュータを、チャットルームに対するユーザからの出力指示及び出力対象の投稿を検知する手段、前記出力対象の投稿が検知されたときに、前記ユーザ又は前記チャットルームに出力機器の識別情報が登録されていない場合は前記出力対象を前記ユーザ又は前記チャットルームに対応する出力対象として登録する登録手段、前記出力指示の投稿が検知されたときに、前記ユーザ又は前記チャットルームに出力機器の識別情報が登録されていない場合は、出力機器の識別情報の登録を前記ユーザに要求する投稿を前記チャットルームに入力する制御を行う制御手段、として機能させるためのプログラムである。
【発明の効果】
【0020】
請求項1、2又は11に係る発明によれば、出力機器の識別情報の登録がある前にチャットルームに投稿された出力対象がエラーとなることなく、出力機器が登録されたらその出力機器から出力されるよう制御することができる。
【0021】
請求項3又は6に係る発明によれば、チャットルームに対する投稿により入力された識別情報に対応する出力機器が利用可能でない場合に、ユーザにその利用可能で無い状態を解消するためのきっかけを与えることができる。
【0022】
請求項4に係る発明によれば、同じ出力機器が複数のユーザに同時に登録された状態となることによる不具合を防止することができる。
【0023】
請求項5に係る発明によれば、ユーザからコード画像を投稿する方法で出力機器の識別情報の入力を受け付けることができる。
【0024】
請求項7、8に係る発明によれば、ユーザが、前に登録した識別情報が残っていることにより、別の出力機器から出力したい場合にその前に登録した識別情報に対応する出力機器から出力されてしまうことを防止することができる。
【0025】
請求項9に係る発明によれば、グループチャットのチャットルームに入室しているユーザが使う可能性がある出力機器の登録が解除されてしまうことを防止することができる。
【0026】
請求項10に係る発明によれば、登録解除手段により登録が解除された識別情報に対応する出力機器を再度使用する際に再度同じ識別情報を入力する手間を省くことができる。
【図面の簡単な説明】
【0027】
【
図5】登録プリンタ情報テーブルの別の例の説明図である。
【
図6】プリンタの登録及び印刷に関するチャットボットの処理手順を例示する図である。
【
図7】プリンタの登録解除に関するチャットボットの処理手順を例示する図である。
【
図8】プリンタの登録及び印刷に関するチャットボットの処理手順の更に詳細な例の一部を示す図である。
【
図9】プリンタの登録及び印刷に関するチャットボットの処理手順の更に詳細な例の残りの部分を示す図である。
【
図11】チャットの画面表示の別の例を示す図である。
【
図12】登録を指示されたプリンタを確認する処理の手順を例示する図である。
【
図13】ユーザから登録を指示されたプリンタが他のユーザに登録されている場合のチャットボットの処理手順の例の一部を示す図である。
【
図14】ユーザから登録を指示されたプリンタが他のユーザに登録されている場合のチャットボットの処理手順の例の残りの部分を示す図である。
【
図15】プリンタの登録解除の手順の詳細な例を示す図である。
【
図16】登録の自動解除の適用、不適用をプリンタごとに規定した登録プリンタ情報テーブルの説明図である。
【
図17】前回使用したプリンタのIDを記録した登録プリンタ情報テーブルの説明図である。
【
図18】前回使用したプリンタを提案するステップを含んだ処理の手順を例示する図である。
【発明を実施するための形態】
【0028】
以下、図面に基づき本発明の実施形態について、チャットボットとして、ユーザからのメッセージに応じて印刷サービスを提供するチャットボットを例にとり説明する。
【0029】
<システムの概要>
図1は、実施形態におけるメッセージサービスシステムの全体構成図を示す。メッセージサービスシステムは、ユーザ端末A(10A)~ユーザ端末C(10C)、チャットサービスサーバ14、ボットサーバA(16A)~ボットサーバB(16B)、及びプリンタa(18a)~プリンタc(18c)を備える。
【0030】
ユーザ端末A(10A)~ユーザ端末C(10C)は、メッセージサービスのユーザが利用する端末であり、スマートフォンやタブレット端末、PC(パーソナルコンピュータ)等の情報端末である。図では、ユーザ端末A(10A)、ユーザ端末B(10B)、ユーザ端末C(10C)の3台を示しているが、その数は任意である。ユーザは、ユーザ端末A(10A)~ユーザ端末C(10C)を操作してクラウド12上のチャットサービスサーバ14にアクセスし、他のユーザやチャットボットとメッセージ等をやり取りする。以下では、ユーザAがユーザ端末Aを操作し、ユーザBがユーザ端末Bを操作し、ユーザCがユーザ端末Cを操作するものとする。ユーザ端末A(10A)~ユーザ端末C(10C)とチャットサービスサーバ14は、有線あるいは無線の通信ネットワークでデータ送受信可能に接続される。通信ネットワークの一例はインターネット等の公衆回線であるが、専用回線でもよい。
【0031】
チャットサービスサーバ14は、クラウド12上に配置されたクラウドサーバであり、チャットサービスを提供するサーバである。チャットサービスサーバ14は、1又は複数のサーバコンピュータで構成される。チャットサービスサーバ14は、ユーザ端末A~ユーザ端末Cに対するメッセージ等の送受信処理、及びメッセージ送受信の表示画面表示等、メッセージのやり取りに関する処理全般を実行する。チャットサービスサーバ14は、2人のメンバ間のメッセージ等のやり取りを処理する他に、3人以上のメンバでグループを形成し、グループ内でのメッセージ等のやり取りを処理することができる。以下では、2人のメンバ間でメッセージ等のやり取りを行なうこと、及びそのやり取りを行なう場のことを、一対一チャット又はピア・ツー・ピアチャットと呼ぶ。また、3人以上のメンバで形成したグループ内でメッセージ等のやり取りを行なうこと、及びそのやり取りを行なう場のことを、グループチャットと呼ぶ。チャットサービスサーバ14は、グループチャットごとに、そのグループチャットに所属するメンバの識別子(例、ユーザID)のリストを保持する。また、チャットサービスにおいてメンバ間でメッセージ等のやりとりが行われる仮想的な場に特に言及する場合には、その場のことをチャットルームと呼ぶ。
【0032】
さらに、チャットサービスサーバ14は、ボットサーバA(16A)、ボットサーバB(16B)と協働し、ボットサーバ16A,16Bにより提供されるチャットボットに対するメッセージ等のやり取りを処理する。本実施形態においてチャットボットは、チャット上でメッセージ等のやり取りを行なう「メンバ」の1人として取り扱う。すなわち、メンバには、実在する人物との関連付けがなされたユーザと、チャットボットとの両方が含まれる。ユーザとチャットボットとのメッセージ等のやり取りには、1人のユーザとチャットボットとのメッセージ等のやり取り、及び複数のユーザとチャットボットとのメッセージ等のやり取りが含まれる。すなわち、チャットボットは、ユーザとの一対一チャットに参加する場合もあれば、グループチャットに参加する場合もある。チャットボットは、例えば、チャットに参加しているユーザからの招待に応じて、そのチャットに参加する。
【0033】
チャットにおいてメンバ間でやりとりされるメッセージ等の概念の中には、テキストで表現されたメッセージの他に、いわゆる「スタンプ」のように投稿内容を表す画像や、URL(Uniform Resource Locator)、音声や動画等によるメッセージ、等が含まれる。このようなメッセージ等のことを、チャットに対する「投稿」とも呼ぶ。これはチャットに投稿された情報を示す意味での「投稿」である。また、チャットのメンバが、そのようなメッセージ等をそのチャットに入力する行為のことも「投稿」と呼ぶ。これは行為としての「投稿」である。チャットへの「投稿」行為には、そのチャットに対してテキストのメッセージを書き込む行為、スタンプを送信する行為、URLを貼付する行為、ファイル等のデータをチャットに入力する行為(例えば投稿するデータを選択し、投稿ボタンを押下する行為)、などが含まれる。
【0034】
ボットサーバA(16A)、ボットサーバB(16B)は、ユーザとの間で投稿をやり取りするチャットボットのソフトウエアロボットプログラムがインストールされ、当該プログラムを実行する。これらのボットサーバA(16A)、ボットサーバB(16B)は、企業や店舗などの、広告用または商業用に割り当てられたメッセンジャーサービスアカウントがそれぞれ運用するものであってもよい。
【0035】
ボットサーバA(16A)、ボットサーバB(16B)は、チャットサービスサーバ14と特定API(APIとはApplication Programming Interface:アプリケーションプログラミングインタフェースのこと)を介して協働し、ユーザとメッセージ等の投稿をやり取りし、ユーザからのメッセージに自動応答してメッセージを返信する。特定APIは、チャットサービスサーバ14を利用するためのAPIである。APIの形式は任意であるが、例えばJSON(Javascript(登録商標) Object Notation:ジャバスクリプト オブジェクト ノーテイションの略)形式のAPIとし、規定のフォーマットのJSONデータをチャットサービスサーバ14の特定URLに対してPOSTやGETで送信し、結果がJSON形式のデータとして返ってくる。
【0036】
ボットサーバA(16A)、ボットサーバB(16B)は、ユーザからのメッセージに動作指示が含まれている場合に、当該動作指示に応じて特定のサービス内容を実行する。本実施形態において、ボットサーバA(16A)は、ユーザからのメッセージに印刷指示が含まれている場合に、この印刷指示に応じてプリンタa(18a)、プリンタb(18b)又はプリンタc(18c)を動作させて印刷処理する「プリントボット」として機能する。他方、ボットサーバ16Bは、ユーザからの動作指示に応じて任意のサービスを提供し得る。
図1では、ボットサーバA(16A)、ボットサーバB(18B)の2台を示しているが、その数は任意である。また、1台のボットサーバで複数のチャットボットを構成してもよく、複数台のボットサーバで1つのチャットボットを構成してもよい。
【0037】
チャットボット(あるいはプリントボット)としてのボットサーバAは、予めユーザ毎に登録された、ソフトウエアロボットプログラムの動作に関する設定情報に従ってプリンタa、b又はcを駆動して印刷処理を実行する。本実施形態では、ユーザごと、又はチャットルームごとに、そのユーザが利用するプリンタ、又はそのチャットルームに参加するユーザが利用するプリンタを、動的にチャットボットに登録することが可能である。
【0038】
プリンタa(18a)~プリンタc(18c)は、ボットサーバAからの指令により印刷処理を実行する。
【0039】
図2は、ボットサーバA(16A)の機能ブロック図である。ボットサーバAは、機能ブロックとして、通信部160、メッセージ受付部161、内容解析部162、動作制御部163、応答メッセージ作成部164、ユーザ情報記憶部165、登録プリンタ情報記憶部166、メッセージ記憶部167、APIゲートウェイ168、及びプリンタDB(データベース)169を備える。
【0040】
通信部160は、チャットサービスサーバ14及びプリンタa~cと通信する。通信部160は、APIゲートウェイ168を介してチャットサービスサーバ14と通信し、投稿を交換する。通信部160は、APIゲートウェイ168を介してチャットサービスサーバ14から受信した投稿、すなわちユーザ端末A~ユーザ端末Cからの投稿をメッセージ受付部161に出力する。また、通信部160は、応答メッセージ作成部164で作成されたメッセージ等の応答を、APIゲートウェイ168を介してチャットサービスサーバ14に送信(つまりユーザ端末A~ユーザ端末Cに送信)する。さらに、通信部160は、動作制御部163からの指令に従い、プリンタa~cに印刷指示を出力してプリンタa~cを駆動する。
【0041】
メッセージ受付部161は、通信部160からの投稿を受け付け、内容解析部162に出力する。チャットにおけるユーザからの投稿の中には、印刷指示や、チャットボットからの問い合わせに対する回答が含まれる。メッセージ受付部161は、受け付けた投稿をメッセージ記憶部167に順次記憶する。
【0042】
内容解析部162は、受け付けた投稿の内容を解析する。例えば内容解析部162は、
その投稿の内容にファイルが含まれる場合、そのファイルのファイル形式を判別する。投稿に含まれるファイルの形式には、例えば、PNG形式やJPEG形式等の画像ファイルの形式、ワードプロセッサやスプレッドシートのアプリケーションにより生成されるアプリケーション固有の文書ファイル形式、PDF(Portable Document Format)形式等の閲覧用の文書ファイル形式等がある。また内容解析部162は、その投稿がテキストで表現されたメッセージを含む場合、そのテキストを解析して動作制御部163に出力する。具体的には、受け付けたメッセージに含まれるユーザ識別子(以下、ユーザIDという)を認識するとともに、メッセージに含まれるテキスト部分を抽出してその構文解析を実行する。構文解析の方法は任意であり、例えば、入力メッセージを形態素単位に分解した後、名詞や形容詞、動詞、疑問代名詞をキーワードとして抽出する。内容解析部162は、メッセージのテキスト部分に動作指示が含まれている場合に、その動作指示の内容を解析して動作制御部163に出力する。本実施形態における動作指示には、印刷指示、プリンタの登録指示、チャットボットの問合せに対する回答としての指示、が含まれる。また、受け付けた投稿がスタンプである場合は、内容解析部162はそのスタンプに対応付けられた意味情報を取得する。スタンプにはあらかじめ当該スタンプが示す意味が定められており、チャットの処理を行うコンピュータは、各スタンプの意味を、そのスタンプ自体から、又はチャットサービスサーバから取得できる。
【0043】
また内容解析部162は、投稿に画像ファイルが含まれる場合、その画像ファイルが表す画像を解析し、その画像がQRコード(登録商標)等の所定コード形式のコード画像であるかどうかを判定する。画像が所定コード形式のコード画像であるかどうかは、公知の方式で判定すればよい。本実施形態のチャットボットは、ユーザ又はチャットルームに登録するプリンタのプリンタIDを、コード画像の形式で受け付ける機能を持っており、その機能のために内容解析部162は、投稿にコード画像が含まれるかどうかを判定する。
【0044】
動作制御部163は、内容解析部162で得られた解析結果に基づき、ユーザからの印刷指示を認識した場合、そのユーザに対して、又はその印刷指示が投稿されたチャットルームに対して、プリンタが登録されているか否かを判定する。そして登録されている場合には、その登録されているプリンタa、b又はcに対して、通信部160を介して印刷指示を出力する。また、ユーザ又はチャットルームにプリンタが登録されていないと判定した場合には、動作制御部163は、後述する応答メッセージ作成部164と協働して、プリンタの登録を要請するメッセージ等をそのチャットルームに投稿する。そして、そのメッセージ等に応じてそのユーザからプリンタの識別情報(以下プリンタIDと呼ぶ)が投稿されると、そのプリンタIDをそのユーザ又はチャットルームで使用するプリンタの情報として登録する。
【0045】
応答メッセージ作成部164は、内容解析部162における解析結果や動作制御部163からの指示に応じて応答内容を示す投稿情報を作成し、通信部160を介してその投稿情報をチャットサービスサーバ14に送信する。この応答の投稿情報の一例は、前述したプリンタの登録を要請するメッセージである。
【0046】
ユーザ情報記憶部165は、チャットサービスサーバ14を利用するユーザの情報、特に、ボットサーバAで実現されるチャットボットを利用するユーザの情報をテーブルとして記憶する。チャットボットは、チャットサービスサーバ14で実現されるチャットサービス上で特定のアカウントが割り当てられており、このアカウントを指定してユーザが一定の操作(例えば「友達」登録を意味する操作)を行うことでチャットボットの利用が確定される。ユーザ情報記憶部165が記憶するユーザの情報には、例えばユーザID、ユーザが持つ各種の権限についての情報等がある。
【0047】
登録プリンタ情報記憶部166は、ユーザ又はチャットルームに対して登録されたプリンタの情報を記憶する。例えば、登録プリンタ情報記憶部166は、ユーザごとに、そのユーザに対して登録されたプリンタのプリンタIDを記憶する。
【0048】
メッセージ記憶部167は、メッセージ受付部161で受け付けたユーザからのメッセージを履歴として記憶する。
【0049】
プリンタDB169は、チャットボットから制御可能なプリンタの情報が登録されたデータベースである。プリンタDB169に記憶される各プリンタの情報には、各プリンタのプリンタIDがある。また、プリンタDB169には、プリンタの通信アドレス(例えばIPアドレス)、性能(例えば両面印刷の可否、カラー印刷の可否等)等の情報が記憶されていてもよい。プリンタDB169に登録されているプリンタ群が、ユーザ又はチャットルームに登録できるプリンタの母集団である。
【0050】
図3は、ボットサーバAの構成ブロック図を示す。ボットサーバAは、1又は複数のサーバコンピュータから構成され、1又は複数のCPU16b、ROM16c、RAM16d、通信インタフェース(I/F)16e、入出力I/F16f、及び記憶装置16gを備える。
【0051】
1又は複数のCPU16bは、ROM16cあるいは記憶装置16gに記憶されたボットアプリを読み出し、RAM16dをワーキングメモリとして用いることでチャットボットの機能を実現する。すなわち、ユーザからのメッセージに自動応答し、ユーザからのメッセージに動作指示が含まれている場合に当該動作指示に応じてプリンタa~cを駆動する。CPU16bは、ボットアプリを実行することで、
図2におけるメッセージ受付部161、内容解析部162、動作制御部163、応答メッセージ作成部164、及びAPIゲートウェイ168を実現する。
【0052】
通信I/F16eは、チャットサービスサーバ14とのメッセージのやり取りを行うとともに、プリンタa~cに対して印刷指示を出力する。
【0053】
入出力I/Fは、キーボードマウス等の入力装置、表示装置等の出力装置とデータを送受信する。
【0054】
記憶装置16gは、HDD(Hard Disk Drive:ハードディスクドライブ)やSSD(Solid State Drive:ソリッドステートドライブ)等の不揮発性メモリで構成され、ボットアプリを記憶する他に、ユーザ情報テーブル、プリンタ情報テーブル、メッセージ管理テーブル及びプリンタテーブルを記憶する。記憶装置16gは、
図2におけるユーザ情報記憶部165、登録プリンタ情報記憶部166、メッセージ記憶部167及びプリンタDB169を実現する。
【0055】
なお、本実施形態では、チャットボットを実現するためのソフトウエアロボットプログラムをCPUにより実行しているが、チャットボットの一部をプログラムの実行による処理ではなく、ハードウエア処理により実現してもよい。ハードウエア処理は、例えばASICやFPGA(フィールドプログラマブルゲートアレイ)などの回路を用いて行ってもよい。
【0056】
図4に、登録プリンタ情報記憶部166に記憶される登録プリンタ情報テーブルの例を示す。この例の登録プリンタ情報テーブルには、各ユーザのユーザIDに対応付けて、そのユーザの登録プリンタのプリンタIDが記憶されている。ユーザがチャット上でチャットボットに印刷指示を行った場合、チャットボットは、そのユーザの登録プリンタのプリントIDが登録プリンタ情報記憶部166に記憶されていれば、その登録プリンタにその印刷指示に係る印刷処理を実行させる。
【0057】
図5に、登録プリンタ情報記憶部166に記憶される登録プリンタ情報テーブルの別の例を示す。
図4に例示したテーブルが、ユーザに対応付けられた登録プリンタのプリンタIDを記憶したものであるのに対し、
図5に例示したテーブルは、チャットルームに対応付けられた登録プリンタのプリンタIDを記憶している。すなわち、
図5のテーブルには、チャットルームの識別情報(以下、ルームIDと呼ぶ)に対応付けて、そのチャットルームで使用するものとして登録された登録プリンタのプリンタIDが登録されている。ユーザがチャット上でチャットボットに印刷指示を行った場合、チャットボットは、そのチャットのチャットルームのプリンタIDに対応するプリンタが、登録プリンタ情報記憶部166に登録されていれば、そのプリンタにその印刷指示に係る印刷処理を実行させる。
【0058】
プリンタをユーザ単位で登録するか、チャットルーム単位で登録するかは、ボットサーバ16A内で一律に決めておいてもよいし、チャットルームごとに個別に設定できるようにしてもよい。また、ユーザ単位でのプリンタ登録及びチャットルーム単位でのプリンタの登録の両方を受け付けるようにしてもよい。この場合、チャットルーム上で印刷指示を行ったユーザと、そのチャットルームと、の両方にプリンタが登録されている場合も起こり得る。そのような場合の対処方法の情報はボットサーバ16Aに設定しておけばよい。ここでいう対処方法の情報は、例えば、ユーザからの印刷指示に対して、そのユーザの登録プリンタと、その印刷指示が投稿されたチャットルームの登録プリンタのどちらに印刷させるかを決めるルールである。あるいは、対処方法の情報は、そのような場合にチャットルーム上でユーザにどちらのプリンタで印刷するか問い合わせることを示した情報であってもよい。
【0059】
<チャットボットの動作>
次に本実施形態においてチャットボット(すなわちボットサーバ16A又は16B)が行う制御の例を説明する。
【0060】
図6は、チャットボットの概略的な処理手順の一例を示す。このチャットボットは、あるチャット(すなわちチャットルーム)に参加しているものとする。ここでは、プリンタの登録がユーザ単位でなされる場合を例にとって説明する。
【0061】
チャットボットは、チャットにおけるユーザの投稿を監視している。そのチャットがグループチャットであり、複数のユーザがそのチャットに参加している場合は、チャットボットはそれら各ユーザの投稿を監視している。
【0062】
チャットボットは、この監視の中で、ユーザからの投稿がプリンタIDを示すものか(S10)、印刷対象のファイルであるか(S14)、及びその投稿が印刷指示を意味するものか(S18)を判定する。
【0063】
プリンタIDが投稿された場合(S10の判定結果がYes)、チャットボットは、そのプリンタIDを、登録プリンタ情報テーブル(
図4参照)のそのユーザのユーザIDに対応する登録プリンタの欄に登録する(S12)。画像ファイルや文書ファイル等の印刷対象となり得るファイルが投稿された場合(S14の判定結果がYes)、チャットボットは、そのファイルを印刷対象として、そのユーザのユーザIDに対応付けて保存する(S16)。
【0064】
ユーザからの投稿が、プリンタIDでもファイルでも印刷指示でもない場合(すなわちS18の判定結果がNo)は、チャットボットは、S10に戻り、ユーザからの次の投稿を待つ。すなわち、印刷に関係しない、ユーザ間の一般的なやりとりのための投稿には、反応しない。
【0065】
また別の例として、このチャットルームが、ユーザとチャットボットとの一対一チャットのためのルームである場合において、S18の判定結果がNoである場合には、チャットボットは、簡潔に指示し直すよう要請する内容の投稿をチャットルームに対して行ってもよい。ユーザとチャットボットの一対一のチャットルームでは、ユーザから投稿されるのは、プリンタIDの登録、印刷対象のファイル、印刷指示のいずれかであるはずなので、そのいずれともチャットボットが認識できなかった場合には、投稿された内容が複雑である等の問題がある可能性があるので、簡潔な内容で投稿し直すようユーザに要請するのである。逆に、このチャットルームが、複数人の人間のユーザとチャットボットとが参加しているグループチャットのルームである場合には、S18の判定結果がNoである場合、対象となる投稿は他の人間のユーザに向けて発せられたものである可能性が高いので、チャットボットはその投稿は無視するようにしてもよい。
【0066】
このように、チャットボットは、参加しているチャットルームが一対一チャットかグループチャットかで、S18の判定結果がNoの場合の動作を切り替えてもよい。
【0067】
ユーザからの投稿が印刷指示を示すものである場合(S18の判定結果がYes)、チャットボットは、登録プリンタ情報テーブルにそのユーザに対応するプリンタが登録されているか否かを調べる(S20)。そして、S20で登録されていると判定した場合は、S16で記憶した印刷対象のファイルを、そのプリンタに送信して印刷させる(S22)。なお、印刷指示を示す投稿を検知したときに、印刷対象のファイルが投稿されていない場合には、チャットボットは、印刷対象のファイルを投稿するよう要請する内容の投稿をチャットルームに行い、この投稿に応じてユーザから投稿されたファイルをプリンタに印刷させる。
【0068】
S20で、そのユーザに対応するプリンタが登録プリンタ情報テーブルに登録されていないと判定した場合、チャットボットは、そのチャットに対して、今回の印刷に使用するプリンタのプリンタIDを登録するよう要請する内容の投稿を行う(S24)。
【0069】
チャットに対するプリンタIDの投稿は、例えば、プリンタIDを示すQRコード(登録商標)等のコード画像を、そのチャットの画面を表示しているユーザの携帯端末(例えばスマートフォン)のカメラで撮影し、撮影した画像をそのチャットに入力することで行う。ここで、プリンタIDを示すコード画像は、例えば、ユーザが使用しようとしているプリンタのUI(ユーザインタフェース)画面のメニューから呼び出すことによりその画面に表示される。あるいは、そのコード画像を印刷したシールをそのプリンタに貼付しておいてもよい。また、プリンタIDの投稿は、プリンタIDを示すテキストをチャットに入力する方法で行ってもよい。
【0070】
S24の後、チャットボットは、その投稿に対してそのユーザからプリンタIDが投稿されるのを待ち(S26)、プリンタIDが投稿されると、そのプリンタIDをそのユーザのユーザIDに対応付けて登録プリンタ情報テーブルに登録する(S28)。そして、チャットボットは、今登録したプリンタに、S16で記憶した印刷対象のファイルを送付して印刷させる(S22)。
【0071】
このように、チャットボットは、チャット上でユーザから印刷指示を受けた場合に、そのユーザが用いるプリンタが登録されていなければ、ユーザにプリンタの登録(すなわち使用したいプリンタのIDの入力)をそのチャット上で要請する。この要請に応じてユーザがプリンタIDを入力すると、そのプリンタIDが示すプリンタに対して印刷指示の対象文書を印刷させる。
【0072】
また本実施形態では、プリンタの登録を基本的には一時的なものとして取り扱う。すなわち、チャットボットは、プリンタの登録を、ユーザから明示の登録解除指示がなくても、所定の登録解除条件が満たされると、自動的に解除する。登録解除条件には、例えばユーザがその登録したプリンタを利用しないまま所定時間が経過したこと、等の条件がある。
【0073】
このように、プリンタの登録を自動的に解除するのを基本モードとするのは、一つには、ユーザがチャットサービスの利用に用いる端末が携帯端末である場合が多いと考えられるからである。ユーザが携帯端末を携帯して移動するので、ユーザがその携帯端末からチャットに参加しているときの現実の居場所は一定ではない。このため、仮にプリンタを固定的に登録する方式をとると、ユーザがその固定的に登録したプリンタがある場所とは別の場所にいるときに印刷を行う場合に、ユーザの意図せぬ不具合が生じる。すなわち、ユーザが、使用するプリンタを変更する操作をせずに印刷指示を行うと、ユーザの現在の居場所とは異なる場所にあるその登録プリンタから印刷出力がなされてしまうこととなる。そこで、本実施形態では、ユーザが用いるプリンタの登録を一時的なものとし、その代わりに、必要となったときのチャットボットへのプリンタの登録操作を簡潔なもの(例えば前述したプリンタIDを示すコード画像の撮影)とすることで、ユーザの操作負担を軽減する。
【0074】
図7に、チャットボットが実行する、プリンタの登録解除制御の概略的な手順を例示する。この手順は、ユーザに対応付けるプリンタが登録されたことをトリガとして開始される。チャットボットは、この手順の開始と共にタイマを起動する(S30)。このタイマは、登録解除条件の1つである、登録プリンタを使用していない時間、の計時に用いられる。チャット上に、印刷対象の文書や印刷指示の投稿など、ユーザがプリンタを使用する意思があることを示す投稿が行われると、そのタイマの残り時間はリセット(初期化)又は延長される。そして、チャットボットは、例えば定期的に、タイマがタイムアウト(すなわち残り時間が0になること)をする等の登録解除条件が成立したかどうかを判定し(S32)、登録解除条件が成立すると、登録プリンタ情報テーブルへのそのユーザのプリンタ登録を解除、すなわちそのテーブル内のそのユーザの登録プリンタ欄のプリンタIDを削除する(S34)。
【0075】
以上、プリンタがユーザ単位で登録される場合を例にとって説明したが、プリンタがチャットルーム単位で登録される場合も、同様の処理を行えばよい。
【0076】
<チャットボットの動作の詳細な例>
次に、
図8及び
図9を参照して、チャットボットの動作手順のより詳細な例を説明する。この例では、プリンタをチャットボットに登録する操作として、ユーザが携帯端末のチャットアプリ画面から呼び出したカメラによりプリンタIDのコード画像を撮影する方法を用いる方法を想定する。
【0077】
図8に示すように、まずチャットボットの動作制御部163は、自分が参加しているチャットルームに新たな投稿がなされるのを待つ(S100)。
【0078】
新たな投稿がなされた旨の通知をメッセージ受付部161から受け取ると、動作制御部163は、その投稿が画像ファイルや文書ファイル等のファイルを含むかどうかを内容解析部162に判定させる(S102)。この判定の結果がYesの場合、更にそのファイルの内容がコード画像であるかどうかを内容解析部162に判定させる(S104)。
【0079】
S104の判定の結果がNoの場合、そのファイルは印刷対象になる可能性があるので、動作制御部163は、そのファイルを、その投稿を行ったユーザのユーザIDに対応付けて保存する(S106)。そして、動作制御部163は、応答メッセージ作成部164を用いて、印刷対象を受け付けたことを表す応答メッセージをそのチャットルームに投稿する(S108)。そしてS100に戻って、新たな投稿がなされるのを待つ。
【0080】
S104の判定結果がYesの場合、動作制御部163は、そのファイルが示すコード画像を内容解析部162にデコードさせ(S110)、デコード結果を受け取る。次に動作制御部163は、そのデコード結果がプリンタIDを含んでいるかどうかを判定する(S112)。S112の判定の結果がNoの場合、動作制御部163は、そのファイルを印刷対象として、そのユーザのユーザIDに対応付けて保存し(S106)、印刷対象を受け付けた旨をチャットルームに投稿し(S108)、S100に戻る。
【0081】
S112の判定結果がYesの場合、動作制御部163は、登録プリンタ情報テーブルに対し、そのユーザ(投稿者)のユーザIDに対応付けて、そのデコード結果のプリンタIDを登録する(S114)。次に、動作制御部163は、応答メッセージ作成部164に、プリンタ登録を受け付けた旨の応答メッセージをチャットルームに投稿させる(S116)。そして、動作制御部163は、そのユーザに対応する印刷対象のファイルが保存されているかどうかを調べ(S118)、保存されていればそのファイルを、今登録したプリンタIDに対応するプリンタに送って印刷させる(S119)。この後、S100に戻り、新たな投稿が行われるのを待つ。S118で印刷対象が保存されていない場合、動作制御部163は、S100に戻る。
【0082】
S102の判定結果がNoの場合、すなわちS100で検知された新たな投稿がファイルを含まない場合、その投稿の内容がメッセージのテキスト又はスタンプである場合、
図9に示す手順に進む。
【0083】
この手順では、動作制御部163は、内容解析部162にその投稿内容を解析させ、その投稿内容が印刷指示を示すものであるかどうかを判定する(S120)。例えば、その投稿内容のメッセージに自然言語解析を施すことで、その内容が印刷指示であるかどうかを判定する。S120の判定結果がYesの場合、動作制御部163は、登録プリンタ情報テーブルに、そのユーザのユーザIDに対応するプリンタIDが登録されているかどうかを調べる(S122)。そして、登録されていれば、動作制御部163は、そのプリンタIDに対応するプリンタに対して、印刷対象のファイルを印刷させ(S124)、
図8のS100に戻る。
【0084】
一方、S122の判定結果がNoの場合、動作制御部163は、応答メッセージ作成部164に、プリンタの登録を要請するメッセージ等をチャットルームに投稿させる(S126)。このあと、処理は
図8のS100に戻る。
【0085】
ユーザは、チャットルームに投稿されたこのメッセージ等を見て、チャットアプリからカメラを呼び出し、自分の手近にある、使いたいプリンタのIDを示すコード画像をカメラで撮影し、撮影した画像をチャットルームに投稿する。これに応じて動作制御部163は、
図8の手順によりそのプリンタIDを認識し(S110、S112)、そのユーザに対応付けて登録した(S114)後、S120で認識した印刷指示に応じた印刷処理を、そのプリンタIDに対応するプリンタを用いて実行する(S119)。
【0086】
なお、
図9の手順では、チャットルームに印刷指示が投稿される前にその印刷対象のファイルが投稿済みであることを想定しているが、その想定が成り立たない場合には、動作制御部163は、S120で印刷指示を認識した後に、その指示を行ったユーザのIDに対応付けて印刷対象のファイルが保存されているかどうかを調べるようにしてもよい。そして、保存されていないことが分かった場合には、印刷対象のファイルを投稿するよう促す投稿をチャットルームに行うようにしてもよい。
【0087】
なお、S112における、コード画像のデコード結果がプリンタIDを含むかどうかの判定は、例えば、そのデコード結果のテキストが特定条件を満たし、その特定条件により規定されるプリンタIDの項目を含んでいるかどうかを調べることで行う。一例として、プリンタIDの情報が、JSON形式で以下に例示するように表現されるとする。
{“print_bot_version” : “1.0” , “type” : “type_id” , “printer_id” : “12345678” , “expiration_time” : “201812310000”}
この例では、デコード結果のテキストがJSON形式で、「“print_bot_version” : “1.0”」かつ「“type” : “type_id”」を含む場合に、動作制御部163は、そのテキストが正当なプリンタIDを示すものであると判定する。そして、そのテキストに含まれる項目“printer_id” の値 “12345678”をプリントIDと認識する。
【0088】
<印刷が行われる際のチャット画面の例>
以上、本実施形態のチャットボットが行う処理を例示した。次に、
図10及び
図11を参照して、チャットルームにおいてユーザとチャットボットとが行うチャットの例を説明する。
図10及び
図11は、ユーザの端末(例えば携帯端末)にインストールされたチャットサービス用のクライアントアプリケーションが生成したチャット画面200を示している。
図10及び
図11において、アイコン100はユーザを、アイコン102はチャットボットを示す。以下、説明を簡潔にするために、アイコン100が示すユーザをユーザ100と呼び、アイコン102が示すチャットボットをチャットボット102と呼ぶ。
【0089】
図10の例では、まずユーザ100が、写真の画像ファイルをチャットルームに投稿する(図示の投稿202)。チャットボット102は、例えば
図8の手順に従い、その投稿が画像ファイルを含み、その画像ファイルはコード画像でないと判定する。そして、その判定に従い、その画像ファイルを印刷対象としてユーザ100のユーザIDに対応付けて保存し、印刷対象(この場合は写真)を受け付けた旨を示す投稿「写真を受け付けました!」をチャットルームに入力する。
【0090】
次にユーザ100は、チャットルームに対して「印刷をお願い」というテキストの投稿204を入力する。チャットボットの内容解析部162は投稿204のテキストを解析してそれが印刷指示を示すものであると判定する。すると、動作制御部163は、そのユーザ100に対応する登録プリンタのIDが登録プリンタ情報テーブルに登録されているかどうかを調べる。この例では、登録されていないとする。
【0091】
この場合、チャットボット102の動作制御部163は、応答メッセージ作成部164により、プリンタの登録を要請する投稿206をチャットルームに入力する。例示した投稿206は、「プリンタのQRコードを撮影してください。」という、登録のための操作を説明するメッセージを含んでいる。ユーザ100は、この要請に応じ、手近にあるプリンタに貼付されたシールに印刷された(又はそのプリンタのUI画面に表示された)QRコードを携帯端末のカメラで撮影し、撮影結果の画像を含んだ投稿208をチャットルームに入力する。
【0092】
投稿208を認識したチャットボット102は、その投稿208内のQRコードをデコードしてプリンタIDを取得し、そのプリンタIDをユーザ100に対応付けて登録プリンタ情報テーブルに登録する。そして、プリンタを登録した旨を示す投稿をチャットルームに入力すると共に、そのプリンタIDに対応するプリンタに対して、印刷対象として記憶している投稿202の画像ファイルを印刷させる。印刷を開始すると、チャットボット102は、印刷中であることを示す投稿をチャットルームに入力し、印刷が完了すると、その旨を示す投稿をチャットルームに投稿する。
【0093】
図11の例は、ユーザから印刷対象や印刷指示の投稿が行われる前に、プリンタの登録指示が行われる場合の例である。この例では、まずユーザ100が、手近にあるプリンタのQRコードを自分の携帯端末のカメラで撮影し、撮影した画像をチャットルームに投稿する。投稿210は、このQRコードの画像を含んでいる。チャットボット102は、例えば
図8の手順に従ってそのQRコードをデコードしてプリンタIDを取得し、そのプリンタIDをユーザ100に対応付けて登録プリンタ情報テーブルに登録する。そして、プリンタを登録した旨を示す投稿をチャットルームに入力する。
【0094】
その後ユーザ100は、印刷したい画像ファイルを含んだ投稿212をチャットルームに入力する。チャットボット102は、その投稿212に含まれる画像ファイルを印刷対象として保存し、その画像ファイルを印刷対象として受け付けた旨を示す投稿を行う。
【0095】
次にユーザ100は、印刷指示を意味する投稿214をチャットルームに入力する。これを受けてチャットボット102は、印刷対象の画像ファイルを、先ほど登録したプリンタに印刷させる。
【0096】
<プリンタ登録時の詳細な処理の例>
上述した
図10の手順では、チャットボットは、ユーザが投稿したコード画像からプリンタIDを認識したら、そのプリンタIDをユーザのプリンタとして登録し、そのプリンタに印刷を実行させた。しかし、認識したプリンタIDを持つプリンタが実在しなかったり、実在しても電源が切れていたりして、印刷が実行できない場合もあり得る。そこで、そのような場合に対処するチャットボットの処理手順を
図12に例示する。
【0097】
図12に例示する手順は、
図8の手順のS112とS114の間に入るものである。この手順では、チャットボットは、S110及びS112で認識したプリンタIDがプリンタDB168に登録されているかどうかを調べる(S130)。登録されていない場合、そのプリンタIDは間違いである(すなわち、対応するプリンタは実在しない)。この場合、チャットボットは、入力したプリンタIDに間違いが無いか確認する内容のメッセージをチャットルームに投稿し(S132)、
図8のS100に戻る。なお、コード画像から認識したプリンタIDが間違ったものである可能性はあまりないが、チャットルームに対してテキスト入力で入力したプリンタIDの場合は間違っている可能性が相応にある。
【0098】
S130の判定結果がYesの場合、チャットボットは、ネットワーク越しに、そのプリンタIDに対応するプリンタが利用可能どうか確認する(S134)。この確認の処理では、チャットボットはそのプリンタIDに対応するプリンタに対してネットワーク経由で稼働中かどうかを問い合わせ、その問い合わせに対する応答の有無又は応答内容に基づいて、そのプリンタが利用可能か判定する。例えば、その問合せに対して応答があればそのプリンタは利用可能であり、応答がなければ利用可能でないと判定する。チャットボットは、S134の確認処理により、そのプリンタが利用可能であるか判定する(S136)。
【0099】
そのプリンタが利用可能と判定した場合、チャットボットは
図8の手順のS114に進み、そのプリンタIDを登録プリンタ情報テーブルに登録する。
【0100】
一方、プリンタが利用可能でないと判定した場合、チャットボットは、例えば「ご指定のプリンタと接続できません。プリンタの電源、ネットワーク接続をご確認ください。」というように、そのプリンタの状態の確認を求めるメッセージをチャットルームに登録する(S138)。ユーザは、そのメッセージを見て、プリンタの電源等を確認し、プリンタをネットワーク経由で利用可能な状態にするよう試みる。チャットボットは、S138の後、例えば定期的にそのプリンタに対して問合せを行い、そのプリンタが利用可能になったかどうか確認する(S140)。プリンタが利用可能になった場合は、チャットボットは
図8の手順のS114に進む。
【0101】
チャットボットは、S138の投稿のあと、プリンタが利用可能になるのを所定時間待つ(S142)。所定時間待ってもプリンタが利用可能になったことが確認できなければ(S142でタイムアウトと判定)、チャットボットは、指定されたプリンタが利用できないことを示すメッセージをチャットルームに投稿し(S144)、
図8のS100に戻る。
【0102】
次に、
図12の手順の変形例を、
図13及び
図14を参照して説明する。この変形例では、同じプリンタが同時に異なる複数人に登録されている状態が生じないよう制御する。
【0103】
一つのプリンタが異なる複数人に登録されている場合、それら各人の印刷指示が間をおかずにそのプリンタで実行されるといったこともある。そのような場合、ある人の印刷指示に対応する印刷結果を別の人が間違って手に取って見てしまったり間違って持ち去っていったりするという事態も起こり得る。特にそのプリンタがコンビニエンスストア等のように不特定の人がアクセスできる場所にある場合、そのような事態は大きな問題となり得る。そこで、この変形例では、そのような事態が生じないよう、一つのプリンタが複数人に同時に登録されている状態が生じないようにする。
【0104】
図13の手順では、
図8のS110及びS112で認識したプリンタIDがプリンタDB168に登録されているとS130で判定した場合、チャットボットは、登録プリンタ情報テーブルを調べて、そのプリンタIDが他のユーザにも登録されているかどうか判定する(S150)。そのプリンタIDが他のユーザに登録されていなければ、チャットボットは、
図12の手順のS134に進む。
【0105】
S150でそのプリンタIDが他のユーザに登録されていることが分かった場合、チャットボットは、当該「他のユーザ」の印刷指示をそのプリンタで印刷中かどうかを判定する(S152)。以下、説明を簡潔にするために、今回そのプリントIDを登録しようとしているユーザをユーザAと呼び、S150でいまそのプリンタIDが登録されていると判定された「他のユーザ」をユーザBと呼ぶこととする。S152で印刷中でないと判定した場合、チャットボットは、ユーザBに対するそのプリンタIDの登録を解除(すなわち登録プリンタ情報テーブルのユーザBのデータからそのプリンタIDを削除)する(S154)。このとき、チャットボットは、ユーザBが参加しているチャットルームに、プリンタの登録を解除した旨を示す投稿を行ってもよい。そして、チャットボットは、S134に進み、ユーザAに対してそのプリンタIDを登録する。
【0106】
S152の判定結果がYesの場合、チャットボットは、チャットルーム上に、ユーザA宛で、登録しようとしているプリンタが他のユーザにより使用中であることを示すメッセージを投稿し(S156)、そのユーザAを印刷待ちリストの末尾に追加する(S158)。そして、
図14の手順のS160に進む。印刷待ちリストは、ボットサーバ16A又は16Bのメモリ等にプリンタIDごとに用意された待ち行列であり、そのプリンタIDが示すプリンタの登録を待っているユーザIDを先入れ先出し方式で保持する。
【0107】
図14のS160では、チャットボットは、そのプリンタIDに対応するプリンタが実行中の印刷処理が終了するのを待つ。そして、印刷処理が終了すると、その印刷処理の実行を指示したユーザ(すなわちユーザB)に対するそのプリンタIDの登録を解除する(S162)。このとき、ユーザBがそのプリンタIDの登録の指示を行ったチャットルームに対して、別のユーザのためにユーザBのプリンタの登録を解除したことを示す投稿を行ってもよい。
【0108】
次にチャットボットは、そのプリンタIDに対応する印刷待ちリストが空か否かを調べる(S164)。S164の判定結果がNoの場合、すなわち印刷待ちリストにユーザIDが残っている場合、チャットボットは、その印刷待ちリストの先頭のユーザIDを取り出し、そのユーザIDに対してそのプリンタIDを登録する(すなわち登録プリンタ情報テーブルに対して、そのユーザIDに対応付けてそのプリンタIDを登録する)(S166)。そしてチャットボットは、その先頭のユーザIDのユーザが印刷指示を行ったチャットルームに対して、印刷を開始した旨を示す投稿を入力(S168)すると共に、その先頭ユーザに対応付けて保存していた印刷対象のファイル等をそのプリンタIDに対応するプリンタに送って印刷させる(S169)。この後、処理はS160に戻る。
【0109】
S164の判定結果がYesの場合、すなわち当該プリンタIDに対応する印刷待ちリストに未処理のユーザIDがない場合は、チャットボットは、
図8のS100に戻る。
【0110】
このように、
図13及び
図14の手順により、一つのプリンタが一時に割り当てられるユーザは一人に限定される。なお、
図13及び
図14に示した具体的な手順はあくまで一例に過ぎず、同様の処理を実現する別の手順を用いてもよい。
【0111】
<プリンタの自動登録解除の詳細な例>
次に、
図15を参照して、プリンタの登録解除制御の手順の詳細な例を説明する。
【0112】
この手順は、ユーザに対応付けるプリンタが登録されたことをトリガとして開始される。チャットボットは、この手順の開始と共にタイマを起動する(S170)。
【0113】
またチャットボットは、そのユーザがそのプリンタの登録の操作(例えばコード画像の投稿)を行ったチャットルームにそのユーザが参加しているかどうかを判定する(S172)。この判定は、チャットサービスサーバ14に問い合わせることで行えばよい。ユーザがそのチャットルームに参加していない(すなわち、その登録操作の後、ユーザがチャットルームから退出した)場合、チャットボットは、そのユーザに対するそのプリンタの登録を解除し(S188)、この手順を終了する。そのユーザがチャットルームから退出した以上、そのプリンタは今後しばらくは用いられないからである。
【0114】
ユーザがそのチャットルームに参加している場合、チャットボットは、そのユーザがチャットルームに対して印刷対象(例えば画像等のファイル)又は印刷指示を新たに投稿したかどうかを判定する(S174)。この判定の結果がYesの場合、チャットボットは、タイマの残り時間を初期化、又は所定長さだけ延長する(S176)。ユーザが印刷対象となるファイル等又は印刷指示を投稿した場合、ユーザはそのプリンタを使用する意思を持っているということであり、その投稿の後も続けてそのプリンタに対する印刷関連の投稿を行う可能性があるので、タイマを延長するのである。
【0115】
その後チャットボットは、タイマがタイムアウトした(すなわち残り時間が0になった)かどうかを判定し(S178)、タイムアウトした場合には、そのユーザに対するそのプリンタの登録を解除し(S188)、この手順を終了する。タイマがタイムアウトした場合、ユーザがそのプリンタを少なくともしばらくは使うことがないと考えられるので、登録を解除するのである。
【0116】
S178の判定結果がNoの場合、チャットボットは、タイマの残り時間が所定の閾値以下であるかどうかを判定する(S180)。この判定の結果がYesであれば、チャットボットは、そのユーザにプリンタの登録を延長するか否かを問い合わせる投稿をチャットルームに対して行い(S182)、ユーザからの応答を待つ。そして、その問合せから所定時間以内に延長を要求する旨の投稿がそのユーザからあれば(S184の判定結果がYes)、チャットボットは、タイマの残り時間を初期化、又は所定長さだけ延長し(S186)、S172に戻る。所定時間内に延長要求の投稿がない場合、又は延長不要の旨の投稿があった場合は、チャットボットは、S186をスキップし、S172に戻る。
【0117】
また
図15には示さなかったが、チャットボットは、ユーザからプリンタの登録解除を指示する投稿を受けた場合に、そのプリンタの登録を解除してもよい。
【0118】
以上に説明したように、この例では、ユーザがチャットルームから退出した場合、プリンタを利用する意思表示をしない状態が所定時間続いた場合、又は明示的な解除指示を行った場合、にそのユーザに対するそのプリンタの登録を解除する。
【0119】
またプリンタ登録を自動解除する場合の別の例として、チャットボットが、参加していたチャットルームに対するユーザからの指示に応じてそのチャットルームから退出した場合がある。この場合、チャットボットは、そのチャットルーム上でのユーザの指示応じて行ったプリンタの登録を解除する。
【0120】
また更に別の例として、プリンタが印刷を完了すると、そのプリンタのユーザ等への登録を解除するようにしてもよい。
【0121】
なお、以上に説明したプリンタ登録の自動解除は、必ずしもすべてのプリンタに適用しなくてもよい。プリンタごとに自動解除を適用するかしないかを定めておいてもよい。例えば、プリンタDB168に対して、プリンタIDごとに、自動解除を適用するか否かを登録しておき、チャットボットは、ユーザがプリンタを登録した場合、その登録を自動解除するかどうかを、プリンタDB168を参照して判定してもよい。また、プリンタに貼付したシールやプリンタの画面に表示されるコード画像が示す情報に、プリンタIDに加え、そのプリンタが自動解除の適用対象か否かを示す情報を含めておいてもよい。この場合、チャットボットは、
図16に例示するように、そのコード画像がユーザから投稿された際に、そのコード画像が示すプリンタIDをユーザに対応付けて登録プリンタ情報テーブルに登録すると共に、そのプリンタIDが自動登録解除の対象であるかどうかを示す情報をその登録プリンタ情報テーブルに登録する。なお、
図16の例では、テーブルの自動登録解除の欄の値が「ON」であればプリンタは自動解除の適用対象であり、「OFF」であれば適用対象でない。
【0122】
自動解除を適用しないプリンタについては、そのプリンタがユーザ等に登録されると、チャットボットは明示的な解除指示を受けるまではその登録を解除しない。ただし、前述した
図13および
図14の制御をプリンタに適用する場合には、そのプリンタに自動登録解除を適用しない場合でも、あるユーザ等に対するプリンタの登録が、他のユーザ等がそのプリンタを利用するために解除される場合がある。
【0123】
また、チャットボットは、自動解除適用なしのプリンタAがユーザに登録された状態で、そのユーザから自動解除適用有りのプリンタBを登録する旨の指示を受けた場合、いったんそのユーザに対するプリンタAの登録を解除し、代わりにプリンタBを登録する。そしてプリンタBの登録を自動解除すると、チャットボットは、元々登録されていたプリンタAを再度そのユーザに登録してもよい。すなわち、自動解除適用なしのプリンタAは、一種のデフォルトプリンタとして扱うのである。なお、自動解除適用なしのプリンタAがユーザに登録された状態で、そのユーザから自動解除適用なしの別のプリンタCを登録する旨の指示を受けた場合は、デフォルトプリンタがプリンタAからプリンタCに切り替わる。
【0124】
<登録を自動解除したプリンタの再登録操作の簡素化>
上述の例のようにチャットボットがユーザのプリンタ登録を自動解除した場合、ユーザが再度同じプリンタを使うときには再度同じ登録作業を行う必要がある。
【0125】
そこで、以下では、そのような場合のユーザの再登録の作業負担を軽減する例を説明する。
【0126】
この例では、チャットサーバは、ユーザが登録しその後登録を自動解除したプリンタのIDを保存しておき、ユーザが再度チャットルームで印刷指示を行った場合に、チャットルームでその保存していたプリンタを再度利用するか否かを問い合わせる。そして、その問合せに対して、チャットルームに対してユーザから再度利用する旨の投稿がなされた場合、その保存していたプリンタIDをそのユーザに対応付けて登録する。
【0127】
図17に、この例における登録プリンタ情報テーブルの例を示す。例示するテーブルには、ユーザIDに対応付けて、登録プリンタのプリンタID(図中の「現在の登録プリンタ」の欄)と、前回利用された後登録が解除されたプリンタのプリンタID(「前回使用したプリンタ」の欄)とが登録されている。
【0128】
図18に、この例におけるチャットボットの処理手順を例示する。この手順は、
図9の手順のうちS120の判定結果がNoである場合の処理のバリエーションである。
【0129】
図18において、S120の判定結果がNoである場合、すなわち印刷を指示したユーザに対してプリンタが登録されていない場合、チャットボットは、登録プリンタ情報テーブルに、そのユーザが「前回使用したプリンタ」があるかどうかを調べる(S190)。S190の判定結果がNoの場合は、チャットボットはS126に進み、プリンタ登録要請を、そのユーザが印刷指示を投稿しチャットルームに投稿する。
【0130】
S190の判定結果がYesの場合、チャットボットは、そのチャットルームに対して、「前回使用したプリンタ」を使用するかどうかの問合せを投稿する(S192)。この投稿には、「前回使用したプリンタ」がどのプリンタであるかがユーザに分かるようにするための情報、例えばそのプリンタのプリンタ名を含めておいてもよい。プリンタ名は、プリンタごとにあらかじめプリンタDB168等に登録しておけばよい。チャットボットは、その問合せに対するそのユーザの応答の投稿を所定時間待ち、その時間内にユーザから応諾(すなわち、「前回使用したプリンタ」の使用を希望する旨)の投稿があれば(S194の判定結果がYes)、そのユーザに対してその「前回使用したプリンタ」を登録する(S196)。すなわち、登録プリンタ情報テーブル(
図17参照)におけるそのユーザの「現在の登録プリンタ」の欄に、「前回使用したプリンタ」の欄にあるプリンタIDを登録する。そして、チャットボットは、S124に進み、そのプリンタIDに対応するプリンタにて、印刷指示に係る印刷対象のファイルを印刷する。S194の判定結果がNoの場合、すなわちその所定時間内にユーザから応答の投稿がなかった場合や、「前回使用したプリンタ」の使用を拒否する旨の投稿があった場合には、チャットボットはS126に進み、ユーザにプリンタ登録を要請する投稿をチャットルームに行う。なお、S192の投稿において、「前回使用したプリンタ」を使用するかどうかを問い合わせると共に、使用しない場合には使用したいプリンタのIDを投稿するよう求めてもよい。この場合、その問合せの投稿に対してユーザがプリンタIDのコード画像を投稿した場合、チャットボットはそのコード画像をデコードし、得られたプリンタIDをそのユーザに対応付けて登録する。
【0131】
図18の例では、チャットボットは、ユーザからの印刷指示をトリガとして、そのユーザが「前回使用したプリンタ」を再度登録するかをユーザに問い合わせたが、この代わりに、ユーザがチャットルームに入場(すなわち参加)したときに、その問合せを行ってもよい。
【0132】
図17及び
図18の例では、前回のプリンタIDを記憶し、次回にユーザに提案したが、これは一例に過ぎない。この代わりに、過去の所定期間内、又は過去所定数回などのように、過去の複数回の登録において登録されたプリンタID群を記憶し、それら記憶したプリンタID群の中から所定の基準に従って選択した1以上のプリンタIDをユーザに提案してもよい。例えば、チャットボットは、ユーザごとに、そのユーザが過去1ヶ月の間に登録したプリンタIDを、その登録の日時と対応付けて記憶し、ユーザがチャットルームに入室した場合又はチャットルームで印刷指示を行った場合に、記憶したプリンタID群の中で、前回登録したものと、最も登録回数が多いものの2つを候補としてユーザに提示する投稿をチャットルームに対して行う等である。
【0133】
以上では、プリンタ登録のためのチャットルームへのプリンタIDの投稿を、プリンタIDを表したコード画像を投稿することで行ったが、これは一例に過ぎない。別の例として、プリンタIDを表す文字列をユーザが手入力でチャットルームに投稿してもよい。また、コード画像及び文字列手入力の両方のモードでプリンタIDを登録できるようにしてもよい。ここで、プリンタIDを文字列形式でユーザに投稿させる方式の場合、チャットボットは、プリンタIDの投稿を、他のチャット参加者に読ませる通常のメッセージの投稿と区別する必要がある。このため、一つの例では、チャットボットは、チャットルームにメッセージが投稿されるごとに、そのメッセージに含まれる文字列がプリンタDB168に登録されたプリンタIDを表すかチェックする。ただ、全ての投稿に対してこのようなチェックを行うとチャットボットの処理負担が大きい。そこで、別の例として、ユーザからチャットルームに印刷指示が投稿されたときに、そのユーザにプリンタが登録されていない場合、ユーザにプリンタIDの入力を求める投稿をチャットルームに投稿してチャットボットがプリンタID受付モードに移行し、その移行から例えば所定時間の間だけ、そのユーザからの投稿がプリンタIDを含むか確認するようにしてもよい。もちろん、一度プリンタIDが投稿されたと確認したら、プリンタID受付モードは終了する。プリンタID受付モードでない期間は、チャットボットは、ユーザから投稿されたメッセージがプリンタIDを含むか確認しない。
【0134】
また以上では、プリンタ登録をユーザ単位で行う場合を主たる例として説明を行ったが、プリンタ登録をチャットルーム単位で行う場合にも、同様の制御が適用可能である。プリンタ登録をチャットルーム単位で行う場合、登録プリンタ情報テーブル(すなわち登録プリンタ情報記憶部166)には、チャットルームのIDに対応付けて、そのチャットルームに対応付けるプリンタのIDが登録される。チャットルームに対するプリンタの登録は、そのチャットルームに参加しているユーザがそのチャットルームに対してプリンタIDを投稿することで行う。また、チャットルームがグループチャットのためのものである場合、登録されたプリンタはチャットルームに参加している複数のユーザで共用されることが想定される。そこで、グループチャットのチャットルームについては、プリンタの登録を指示したユーザがそのチャットルームから退出しただけではそのプリンタの登録を自動解除せず、そのチャットルームに参加(すなわち入室)しているユーザ(人間)が一人もいなくなって初めて自動解除するようにしてもよい。また、ユーザからプリンタIDが投稿された際に、チャットボットが、そのプリンタIDをユーザ個人に登録するか、チャットルームに登録するかをそのユーザに問い合わせてもよい。ユーザ個人への登録の場合は、上記実施形態と同様そのユーザがチャットルームから退出すればその登録は自動解除し、チャットルームへの登録の場合はチャットルームが無人になるまではその登録を自動解除しないようにしてもよい。
【0135】
また以上では、チャットボットからプリンタを制御する場合の例を説明した。しかし、上記実施形態の制御は、プリンタ以外の出力機器を制御するチャットボットにも適用可能である。上記実施形態の制御が適用可能な出力機器の例としては、例えば、三次元物体を造形する3Dプリンタ、音声を出力するスピーカ(例えばいわゆるAIスピーカ)、動画等を表示する大画面のディスプレイを制御するコントローラ、等がある。例えば、ユーザが登録したスピーカを制御するチャットボットの場合、グループチャットに音声ファイルが投稿された場合、その音声ファイルを(必要に応じてスピーカが対応可能なデータ形式に変換した上で)ユーザに登録されたスピーカに送って出力させる。
【符号の説明】
【0136】
12 クラウド、14 チャットサービスサーバ、16A,16B ボットサーバ、16g 記憶装置、160 通信部、161 メッセージ受付部、162 内容解析部、163 動作制御部、164 応答メッセージ作成部、165 ユーザ情報記憶部、166 登録プリンタ情報記憶部、167 メッセージ記憶部、168 APIゲートウェイ。