/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 1 . ĠS ung bin ĠJ i . ĠAll Ġrights Ġreserved . Ċ Ġ* Ċ Ġ* ĠK ak ao Talk Bot Base Module Ġlicense Ġis Ġunder Ġthe ĠMIT Ġlicense . Ċ Ġ* ĠS EE ĠLICENSE : Ġhttps :// github . com / s ung bin 5 3 0 4 / K ak ao Talk Bot Base Module / blob / master / LICENSE Ċ Ġ*/ Ċ Ċ package Ġme . s ung bin . k aka otal k bot base module . library Ċ Ċ import Ġandroid . app . Notification Ċ import Ġandroid . app . Remote Input Ċ import Ġandroid . content . Intent Ċ import Ġandroid . graphics . Bitmap Ċ import Ġandroid . graphics . drawable . Bitmap Drawable Ċ import Ġandroid . graphics . drawable . Icon Ċ import Ġandroid . os . Build Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . service . notification . Notification Listener Service Ċ import Ġandroid . service . notification . StatusBar Notification Ċ import Ġandroid . text . Sp anned Ċ import Ġandroid . util . Log Ċ import Ġandroidx . core . content . pm . Package Info Compat Ċ import Ġandroidx . core . text . Html Compat Ċ import Ġme . s ung bin . k aka otal k bot base module . library . service . Background Service Ċ Ċ class ĠK ak ao Bot Ġ: ĠNotification Listener Service () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġtag Ġ= Ġ" K ak ao Talk Bot Base Module " ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate () ĊĠĠĠĠĠĠĠ ĠBot Store . notification Listener ?. on Bot Create ( this ) ĊĠĠĠĠĠĠĠ ĠLog . i ( tag , Ġ" Notification Listener Service Ġis Ġstarting ...") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠĠĠĠĠ ĠBot Store . notification Listener ?. on Bot Destroy ( this ) ĊĠĠĠĠĠĠĠ ĠLog . i ( tag , Ġ" Notification Listener Service Ġis Ġdestroy .") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Notification Posted ( sb n : ĠStatus Bar Notification ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Notification Posted ( sb n ) ĊĠĠĠĠĠĠĠ Ġif Ġ(! Bot Store . power ) Ġreturn ĊĠĠĠĠĠĠĠ Ġif Ġ( sb n . packageName Ġ== Ġ" com . k ak ao . talk ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġw Ext Ġ= ĠNotification . W ear able Ext ender ( sb n . notification ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( action Ġin Ġw Ext . actions ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( action . remote Inputs Ġ!= Ġnull Ġ&& Ġaction . remote Inputs . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( action . title . toString (). lowercase (). contains (" reply ") Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction . title . toString (). contains (" ëĭ µ ìŀ¥ ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġextras Ġ= Ġsb n . notification . extras ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġroom : ĠString ? ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġsender : ĠString ? ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġmessage : ĠString ? ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġis Group Chat Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠpackageName Ġ= Ġsb n . packageName ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . N ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroom Ġ= Ġextras . getString (" android . summary Text ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsender Ġ= Ġextras . get (" android . title ") ?. toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Ġ= Ġextras . get (" android . text ") ?. toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( room Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroom Ġ= Ġsender ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Group Chat Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġis Group Chat Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġk ak ao Talk Version Ġ= Ġ 0 L ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġno K ak ao Talk Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġk ak ao Talk Version Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPackage Info Compat . getLong Version Code ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Manager . get Package Info (" com . k ak ao . talk ", Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ignored : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġno K ak ao Talk Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( no K ak ao Talk Ġ|| ĠpackageName Ġ!= Ġ" com . k ak ao . talk " Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġk ak ao Talk Version Ġ< Ġ 1 9 0 7 3 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroom Ġ= Ġextras . getString (" android . title ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( extras . get (" android . text ") Ġ! is ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhtml Ġ= ĠHtml Compat . to Html ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġextras . get (" android . text ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġas ĠSp anned , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHtml Compat . TO _ HTML _ PAR AG R APH _ LINES _ CON SEC UT IVE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsender Ġ= ĠHtml Compat . from Html ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhtml . split ("< b > ")[ 1 ]. split ("</ b > ")[ 0 ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHtml Compat . FROM _ HTML _ MODE _ COMP ACT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Ġ= ĠHtml Compat . from Html ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhtml . split ("</ b > ")[ 1 ]. split ("</ p > ")[ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. substring ( 1 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHtml Compat . FROM _ HTML _ MODE _ COMP ACT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsender Ġ= Ġroom ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Ġ= Ġextras . get (" android . text ") ?. toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroom Ġ= Ġextras . getString (" android . sub Text ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsender Ġ= Ġextras . getString (" android . title ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Ġ= Ġextras . getString (" android . text ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Group Chat Ġ= Ġroom Ġ!= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( room Ġ== Ġnull ) Ġroom Ġ= Ġsender ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnotification Image : ĠBitmap ? Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġextras . get Bundle (" android . we arable . EXTENSION S ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . get Parcelable (" background ") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! Bot Store . actions . containsKey ( room )) ĠBot Store . actions [ room !! ] Ġ= Ġaction ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchat Hook ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsender Ġ= Ġsender !! , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Ġ= Ġmessage !!. trim (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroom Ġ= Ġroom !! , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Group Chat Ġ= Ġis Group Chat , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction Ġ= Ġaction , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprofile Image Ġ= Ġsb n . notification . get Large Icon (). to Bitmap (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnotification Image Ġ= Ġnotification Image ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Power ( power : ĠBoolean ): ĠK ak ao Bot Ġ{ ĊĠĠĠĠĠĠĠ ĠBot Store . power Ġ= Ġpower ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Bot Listener ( notification Listener : ĠNotification Listener ): ĠK ak ao Bot Ġ{ ĊĠĠĠĠĠĠĠ ĠBot Store . notification Listener Ġ= Ġnotification Listener ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Message Receive Listener ( ĊĠĠĠĠĠĠĠ Ġon Message Receive : Ġ( String , ĠString , ĠString , ĠBoolean , ĠNotification . Action , ĠBitmap , ĠBitmap , ĠK ak ao Bot ) Ġ-> ĠUnit , ĊĠĠĠ Ġ): ĠK ak ao Bot Ġ{ ĊĠĠĠĠĠĠĠ ĠBot Store . notification Listener Ġ= Ġobject Ġ: ĠNotification Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Message Receive ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsender : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroom : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Group Chat : ĠBoolean , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction : ĠNotification . Action , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprofile Image : ĠBitmap , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnotification Image : ĠBitmap ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbot : ĠK ak ao Bot , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Message Receive ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsender , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroom , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Group Chat , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprofile Image , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnotification Image , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbot ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Bot Create ( bot : ĠK ak ao Bot ) Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Bot Destroy ( bot : ĠK ak ao Bot ) Ġ{} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġchat Hook ( ĊĠĠĠĠĠĠĠ Ġsender : ĠString , ĊĠĠĠĠĠĠĠ Ġmessage : ĠString , ĊĠĠĠĠĠĠĠ Ġroom : ĠString , ĊĠĠĠĠĠĠĠ Ġis Group Chat : ĠBoolean , ĊĠĠĠĠĠĠĠ Ġaction : ĠNotification . Action , ĊĠĠĠĠĠĠĠ Ġprofile Image : ĠBitmap , ĊĠĠĠĠĠĠĠ Ġnotification Image : ĠBitmap ?, ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ ĠBot Store . notification Listener ?. on Message Receive ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsender , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmessage , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġroom , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Group Chat , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaction , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprofile Image , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotification Image , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġenable Background Service (): ĠK ak ao Bot Ġ{ ĊĠĠĠĠĠĠĠ Ġstart Service ( Intent ( application Context , ĠBackground Service :: class . java )) ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdisable Background Service (): ĠK ak ao Bot Ġ{ ĊĠĠĠĠĠĠĠ Ġstop Service ( Intent ( application Context , ĠBackground Service :: class . java )) ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġreply Room ( ĊĠĠĠĠĠĠĠ Ġroom : ĠString , ĊĠĠĠĠĠĠĠ Ġmessage : ĠString , ĊĠĠĠĠĠĠĠ Ġroom NotFoundException : ĠException . () Ġ-> ĠUnit Ġ= Ġ{}, ĊĠĠĠĠĠĠĠ Ġreply Exception : ĠException . () Ġ-> ĠUnit Ġ= Ġ{}, ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreply ( Bot Store . actions [ room ] !! , Ġmessage , Ġreply Exception ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( exception : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġroom NotFoundException ( exception ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġreply ( action : ĠNotification . Action , Ġmessage : ĠString , Ġexception : ĠException . () Ġ-> ĠUnit Ġ= Ġ{}) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsend Intent Ġ= ĠIntent () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmsg Ġ= ĠBundle () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( input able Ġin Ġaction . remote Inputs ) Ġmsg . put CharSequence ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinput able . result Key , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRemote Input . add Results To Intent ( action . remote Inputs , Ġsend Intent , Ġmsg ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaction . action Intent . send ( application Context , Ġ 0 , Ġsend Intent ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( exception : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexception ( exception ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠIcon . to Bitmap () Ġ= Ġ( this . load Drawable ( application Context ) Ġas ĠBitmap Drawable ). bitmap Ċ } Ċ