チャットのお勉強

目次 (2022/6/24 ver.0.21)

1番目のタブが選択された!

1.What's new

リンク

「トークA愛 」の機能の概要

1.音声チャットボット機能
音声を使って利用出来るチャットボット機能。音声で音楽演奏やYoutube動画演奏を指示できる。
2.チャット電話機能
音声を使って利用出来るチャット機能。遠隔地にいる2人以上の人間が音声でチャットが出来る。

音声チャットボット機能の仕様

1.「JavaScript」で記述する音声チャットボット・アプリ
音声で音楽演奏やYoutube動画演奏を指示できる音声チャットボット・アプリを作れる。
この音声チャットボット・アプリは、「JavaScript」で記述できるので、「Webサーバ」上の「HTMLファイル」としてダウンロードできる。

チャット電話機能の仕様

1.チャットルーム(room)
・ユーザは、複数の「チャットルーム(room)」に属する事ができる。
・ユーザは、自身が属する「チャットルーム(room)」のチャット画面のみを見る事が出来る。
2.チャット電話用のスレッド(thread)
・チャット電話を行う事ができる「チャットルーム(room)」をユーザ毎に一つ指定する事ができる。
・チャット電話を行う事ができる「チャットルーム(room)」は、「users」コレクションの当該「user」ドキュメントの「roomId」に指定する。
3.チャットスレッド(thread)
・「チャットルーム(room)」は、複数のチャットスレッド(thread)を持つ事が出来る。
・チャットスレッド(thread)を利用することで、特定の話題に沿った議論を行う事が出来る。
4.ユーザ認証
・「Google Sign In」機能を使用する。
・ユーザ識別IDとして「uid」を使用する。
・「firestore」に格納するユーザに関する情報は、IDとして「uid」を使用する。
5.着信の検出
・「firestore」の「Realtime Listener」機能を使用する。
6.着信の処理
・チャットAPP(ChatTelehone)が、「XXさんからチャット電話を受信しました。YYYYY...」(YYYYY...が受信メッセージ)と喋る。

チャットルーム(roomsコレクション)の仕様

フィールド名
1.id: ドキュメントID
2.userIds:利用者一覧
3.name:部屋名(string)
4.type:
5.userRoles:
6.createdAt:
7.updateedAt:

ユーザ一覧(usersコレクション)の仕様

フィールド名
1.
2.

有害な役所一覧

税金の無駄使いで日本の借金を世界一に増やしている無能な日本の役所の言う事を聞いていたら、早く死ぬハメになるゾ。

1. 国交省:国土破壊省
  • 街路樹や道路際の桜や銀杏の木を破壊し、自動車の健康を優先し人間(国民)の健康を害し、多くの高齢者を死に追いやっている役所
  • 何十年も前に先人が植えた街路樹や道路際のプラタナスや桜や銀杏の木を切るのは、有史以来の悪魔の行為だ
  • 脱炭素化時代で、炭酸ガスを吸収する先人が植えた街路樹や道路際のプラタナスや桜や銀杏の緑は、最も重要な資源なのに、この役所は時代に逆行しているアホだ
2. 農水省:農業破壊省
  • 減反により日本の農業を破壊し、食料の自給自足を破壊し、国民の健康を害している役所
3. 厚生省:健康破壊壊省
  • 有害無益のコロナ・ワクチンを健康な国民に強要し、国民の健康を害している役所
  • コロナ・ワクチンは、製造元のビル・ゲイツが「感染予防に効かない失敗作だった」と言っているのに、厚労省は、それを無視して、健康な国民の健康を害したり殺そうとしている
4. 外務省:ケンカ売り省
  • 外務省は、ウクライナ問題で西側と一緒になってロシアに制裁を加えるという事で、ロシアに喧嘩を売っている。
  • それをロシア政府から「非友好国指定」された途端、日本政府(外務省)は遺憾だと言って、ロシアに猛抗議をした。
  • 日本政府(外務省)は、自分からロシアに喧嘩を売っておいて、ロシアから「非友好国」と言われて怒るのはアホである。

改定履歴

2.firestoreコレクションの種類

概要

チャットは、「rooms」コレクションと「users」コレクションで構成される。

1.「rooms」コレクション
「rooms」コレクションのドキュメントは、チャットルーム(room)である。
チャットルーム(room)には、チャットに参加できる利用者(user)の一覧表を保持する。
チャットルーム(room)を活用することにより、チームのメンバー(被見守り者と見守り者)は、ファイルの共有・タスクの割り当て・連携の維持を可能にする。
2.「users」コレクション
「users」コレクションのドキュメントは、利用者(user)である。
利用者(user)には、利用者の名前やアバタのURLを保持する。
チャットルーム(room)ではいつでもメンバーを追加、削除でき、メンバーは退出、再参加ともに可能である。
3.「スレッド」の導入
チャットルーム(room)には、「スレッド」機能がある事が望ましい。
現在は、チャットルーム(room)ドキュメントの中に「messages」サブコレクションがあるが、これを「threads」サブコレクションに変更する。
「threads」サブコレクションの中に「messages」サブコレクションを持てば、「スレッド」機能を実現できる。
当然ながら、チャット画面は、この「threads」サブコレクションの中の「messages」サブコレクションを表示する。

roomsコレクション

ドキュメントのフィールド
name: 部屋の名前
userIds: 部屋に加入している利用者IDの一覧
userRoles?:
type: 「direct」
metadata?:
imageUrl?:
createdAt:
updatedAt:
messagesサブコレクションのフィールド:「text」タイプの場合
type: 「text」
text: 投稿テキスト
authorId: 投稿した利用者ID
createdAt:
updatedAt:

users

3.FirebaseChatCoreクラス

Properties

config ↔ FirebaseChatCoreConfig
Config to set custom names for rooms and users collections. Also see FirebaseChatCoreConfig.
read / write
firebaseUser ↔ User?
Current logged in user in Firebase. Does not update automatically. Use FirebaseAuth.authStateChanges to listen to the state changes.
read / write
hashCode → int
The hash code for this object. [...]
read-only, inherited
runtimeType → Type
A representation of the runtime type of the object.
read-only, inherited

Methods

createGroupRoom({String? imageUrl, Map? metadata, required String name, required List users}) → Future<Room>
Creates a chat group room with users. Creator is automatically added to the group. name is required and will be used as a group name. Add an optional imageUrl that will be a group avatar and metadata for any additional custom data.
createRoom(User otherUser, {Map? metadata}) → Future<Room>
Creates a direct chat for 2 people. Add metadata for any additional custom data.
createUserInFirestore(User user) → Future<void>
Creates types.User in Firebase to store name and avatar used on rooms list
deleteMessage(String roomId, String messageId) → Future<void>
Removes message document
deleteRoom(String roomId) → Future<void>
Removes room document
deleteUserFromFirestore(String userId) → Future<void>
Removes types.User from users collection in Firebase
getFirebaseFirestore() → FirebaseFirestore
Gets proper FirebaseFirestore instance
messages(Room room, {List<Object?>? endAt, List<Object?>? endBefore, int? limit, List<Object?>? startAfter, List<Object?>? startAt}) → Stream>
Returns a stream of messages from Firebase for a given room
noSuchMethod(Invocation invocation) → dynamic
Invoked when a non-existent method or property is accessed. [...]
inherited
room(String roomId) → Stream<Room>
Returns a stream of changes in a room from Firebase
rooms({bool orderByUpdatedAt = false}) → Stream
Returns a stream of rooms from Firebase. Only rooms where current logged in user exist are returned. orderByUpdatedAt is used in case you want to have last modified rooms on top, there are a couple of things you will need to do though: [...]
sendMessage(dynamic partialMessage, String roomId) → void
Sends a message to the Firestore. Accepts any partial message and a room ID. If arbitraty data is provided in the partialMessage does nothing.
setConfig(FirebaseChatCoreConfig firebaseChatCoreConfig) → void
Sets custom config to change default names for rooms and users collections. Also see FirebaseChatCoreConfig.
toString() → String
A string representation of this object. [...]
inherited
updateMessage(Message message, String roomId) → void
Updates a message in the Firestore. Accepts any message and a room ID. Message will probably be taken from the messages stream.
updateRoom(Room room) → void
Updates a room in the Firestore. Accepts any room. Room will probably be taken from the rooms stream.
users() → Stream<List<User>>
Returns a stream of all users from Firebase

4.FirebaseChatCoreConfigクラス

トークA初級

5.flutter_chat_uiライブラリ

「Chat」クラス

Chat(
{Key? key, 
 Widget bubbleBuilder(
   Widget child, {required Message message, required bool nextMessageInGroup}
 )?, 
 Widget? customBottomWidget, 
 String customDateHeaderText(DateTime)?, 
 Widget customMessageBuilder(
   CustomMessage, 
   {required int messageWidth}
 )?, 
 DateFormat? dateFormat, 
 int dateHeaderThreshold = 900000, 
 String? dateLocale, 
 bool? disableImageGallery, 
 EmojiEnlargementBehavior emojiEnlargementBehavior = EmojiEnlargementBehavior.multi, 
 Widget? emptyState, 
 Widget fileMessageBuilder(
   FileMessage,
   {required int messageWidth}
 )?, 
 int groupMessagesThreshold = 60000, 
 bool hideBackgroundOnEmojiMessages = true, 
 Widget imageMessageBuilder(
   ImageMessage, 
   {required int messageWidth}
 )?, 
 bool? isAttachmentUploading, 
 bool? isLastPage, 
 ChatL10n l10n = const ChatL10nEn(), 
 required List messages, 
 void onAttachmentPressed()?, 
 void onAvatarTap(User)?, 
 void onBackgroundTap()?, 
 Future onEndReached()?, 
 double? onEndReachedThreshold, 
 void onMessageDoubleTap(BuildContext context, Message)?, 
 void onMessageLongPress(BuildContext context, Message)?, 
 void onMessageStatusLongPress(BuildContext context, Message)?, 
 void onMessageStatusTap(BuildContext context, Message)?, 
 void onMessageTap(BuildContext context, Message)?, 
 void onPreviewDataFetched(TextMessage, PreviewData)?, 
 required void onSendPressed(PartialText), 
 void onTextChanged(String)?, 
 void onTextFieldTap()?, 
 ScrollPhysics? scrollPhysics, 
 SendButtonVisibilityMode sendButtonVisibilityMode = SendButtonVisibilityMode.editing, 
 bool showUserAvatars = false, 
 bool showUserNames = false, 
 Widget textMessageBuilder(
   TextMessage, 
   {required int messageWidth, required bool showName}
 )?, 
 ChatTheme theme = const DefaultChatTheme(), 
 DateFormat? timeFormat, 
 bool usePreviewData = true, 
 required User user
})

→Creates a chat widget