tags: cofacts, meeting note GA: UA-98468513-3 —

20200819 會議記錄

:::info

Cofacts Next! 追蹤

討論事項

RSS 訂閱教學影片

影片 :point_right: https://youtu.be/fK4Xabs-Cds

希望影片可以幫忙 conquer 那一段授權的過程 [name=lucien] 想說比較短比較能吸引人 [name=mrorz] 老實說我不知道哪一種比較好 [name=lucien] 還是我錄一個有授權的版本,看使用者會不會因為太長而放棄 [name=mrorz] 可能不是因為長,而是使用者不知道為什麼要有那一段授權的過程 [name=lucien] 可能用「為了讓 IFTTT 與您的 LINE 連動,⋯⋯」之類的 [name=mrorz]

:::success mrorz 試著把授權過程也放進影片 看看腳本是否能解惑 :::

TODO

Samesite issue

https://github.com/cofacts/rumors-api/issues/186

我的電腦也不能用啦囧 [name=mrorz]

Method 2 要起兩個 site [name=ggm] 我記得 secure 要解決的話就是要 self-sign SSL 讓 nginx <> site 也是 SSL、讓 express 也認知到自己是 SSL。我放棄就是因為這個很麻煩。可能看有沒有暴力解 [name=lucien] 可以試試看暴力解:https://github.com/koajs/koa/issues/974#issuecomment-394198968 或者看看 X-Forwarded-Proto 有沒有用 [name=mrorz]

:::success 試試看 method 1 試著把 secure 搞定。 :::

LINE bot onboarding UX

上週討論:https://g0v.hackmd.io/eitM7s0bSSeS3kg-MAcpDw#LINE-bot-onboarding-UX 開票:https://github.com/cofacts/rumors-line-bot/issues/216

LINE bot state diagram –> call graph?

:::spoiler Slack 中的討論 https://g0v-tw.slack.com/archives/C2PPMRQGP/p1597810692112100

是說我對 chatbot 有個大膽的想法 (?) 目前 Cofacts LINE bot 在實作的時候遇到下面的挑戰:

  1. chatbot 使用者可能會捲回去任何一個步驟按按鈕,因此用 state diagram 來管理邏輯很吃力
  2. 每個 state handler 要處理複數種輸出樣態,而且可能有兩個 state 會想要吐同一種 output,導致我們除了 state handler 之外還要設計產生 reply 的 utility function

如果我把「chatbot 產生 reply」與「chatbot 做事情」兩個東西拆開成比較 atomic 的 function,雖然 function 總數會比 state handler 多,但它可以 visualize 各種輸出樣態(而不是藏在 state 所呼叫的 utility function),也才能更明瞭每種輸出樣態需要的 input argument 有哪些

最後 chatbot 的邏輯就可以整理成這樣:

  • 紅字是使用者的 input。方框裡的是 event payload。
  • 藍字 showXXX 就是機器人說話。說的話裡面可能會有很多按鈕,按下去之後對應到不同的紅字。
  • 黑字 doXXX 就是機器人去資料庫做事情,做完之後會有黑色的箭頭把資料(方框字)送到藍字 function(輸出)或其他黑字 function(處理)

雖然圖看起來變複雜了,但其實是原本的圖太簡單,跟 chatbot 實際的行為有不小的差異。

例如說一個 __INIT__ state 其實含括了整張圖表上半的 doSearch, showSearchResults ;還有神奇的 skip: true 邏輯在特定條件之下一路做了 showReplies 與 showReply。 這張圖則是用更加 declarative 的方式直接秀出「輸入文字查詢」之後的所有輸出的可能性。

原本 state diagram 跟 chatbot 實際行為差異太大的結果就是,state 看起來好像很簡單,但每一條線都對應到很多複雜的邏輯。當每個 state 之間的邏輯無法好好拆開呈現,就代表原本 state diagram 的 state 其實是錯誤的封裝。

[name=mrorz] :::

寫成 function 一方面貼近 chatbot handleInput() -> Messages 的本質,也因為 input output 形狀固定,適合 typescript 化 [name=mrorz]

:::success On-boarding UX 的部分可能先用 call graph + Typescript handleInput 時,發現 action 有指定接下來要呼叫誰,就用 call graph 的方式處理 否則,繼續用過去的 state diagram :::

編輯小聚

上週討論:https://g0v.hackmd.io/eitM7s0bSSeS3kg-MAcpDw#%E7%B7%A8%E8%BC%AF%E5%B0%8F%E8%81%9A

:potable_water: Release pipeline

:star: Released to production

註:本週 renovate 發瘋,所以暫時關掉。

:electric_plug: API

Feature
Bugfix

有些 reply request 很多,導致訊息很短但 reply request 很多,但很少 https://cofacts.g0v.tw/article/2vl006ou5cgvf [name=mrorz] 可以做個收合把它收起來,不過似乎不緊急 [name=nonumpa]

DB migration

analytics index related operations. See https://g0v.hackmd.io/eitM7s0bSSeS3kg-MAcpDw#DB-migration

:::warning TODO: cronjob setup, migration (backtrack) :::

:robot_face: Chatbot

:::warning TODO: rich menu, cronjob setup, migration (backtrack) :::

:rocket: Staging

:::danger Build fail, 開會前無法 resolve,故下週再測⋯⋯ :::

:globe_with_meridians: Site

https://github.com/cofacts/rumors-site/compare/master…dev

Bugfixes
Others
Testing checklist

http://dev.cofacts.org/

未登入下檢測:

登入自有帳號後檢測:

⛔️ Release Blockers
未竟項目

:eye: Under review