依稀記得曾經在 TechPulse 2018 的議程裡面聽過 Icon Switch API 這項功能( 請見新聞報導),當下看完展示覺得非常方便也很感興趣,應用上可以切換成不同小編的頭像(或稱「大頭照」, LINE 管理後台稱為「基本檔案照片」),搭配 Switcher API 由不同的機器人與小編輪番上陣回應使用者的疑難雜症,但是當時僅限付費的合作伙伴可以使用。隨著 LINE 官方帳號 2.0 上路,不僅能夠在後台的回應模式裡面切換機器人與真人,現在(從 2020/3/17 開始支援,請見新聞稿)透過 Messagning API 也可以變換頭像與暱稱了,這項功能尤其適合用於不同場景或是不同身分之間的切換,效果顯著。

話說回來,其實我們每個人應該都曾看過會不停變換的頭像與暱稱。在聊天視窗裡,左側是對方,右側是自己。當我們在操作聊天機器人的時候,就跟平常與單獨一位朋友傳訊息時一樣,左側只會有頭像,不會顯示暱稱,要想起來是跟誰在聊天,看一下標題列就知道(如下圖左側所示),但是如果是群組或聊天室的話,因為左側發言的人數會超過一位,這時候除了頭像之外,還會標註暱稱以資區別(如下圖右側所示)。
一般而言,要在 LINE 聊天機器人中製造明顯的操作場景或對話身分的切換效果,可以透過改變聊天視窗下方的圖文選單( Rich Menu )或者聊天室背景的底色,但是聊天室背景沒有辦法透過 Messaging API 動態變換(至少目前沒有辦法),因此常見的作法是透過 Messagnin API 來更換圖文選單(連同聊天視窗最下方的「選單列」的標題文字也可以更換)。
請先將範例「彰化旅行+」加為 LINE 好友,一開始下方的圖文選單提供「鹿港」、「和美」、「彰化」三個觀光導覽場域,點選後,圖文選單和選單列文字都會變換,如下圖所示。



話說回來,變換頭像與暱稱這項功能的實作,跟快速回覆( Quick Reply )有點像又不太像。相似之處是它們都像是現有訊息的補充,而相異之處則是「變換頭像與暱稱」可以(也必須)每一則訊息、每一個泡泡框都加註,有加註才會生效,沒有加註就是原本的頭像,如下圖所示。相較之下,「快速回覆」則只能夠加註在最後一則訊息,也只有最後一則才會生效。

舉例而言,假設原本的文字訊息以 PHP 實作如下:
array(
'type' => 'text',
'text' => '今天就讓「借問哥」帶你玩彰化。',
),
那麼在傳送者資訊( Sender )更換了「鹿港」頭像、加註了「鹿港借問哥」身分之後,程式碼會變成:
array(
'type' => 'text',
'text' => '今天就讓「借問哥」帶你玩彰化。',
'sender' => array(
'name' => '彰化借問哥',
'iconUrl' => 'https://.../avatar_changhua.jpg',
),
),
以 JSON 來看,就是從:
{
"type": "text",
"text": "今天就讓「借問哥」帶你玩彰化。"
}
擴充為:
{
"type": "text",
"text": "今天就讓「借問哥」帶你玩彰化。",
"sender": {
"name": "彰化借問哥",
"iconUrl": "https://.../avatar_changhua.jpg"
}
}
如你所見,多了關於傳送者( Sender )的描述區塊,暱稱的格式是「設定的暱稱 from ‘聊天機器人的帳號名稱’」,而圖像則是一個圖片網址。此外, name 和 iconUrl 屬性都是選用的,也就是說,可以只加註暱稱,或者只更換頭像,也可以兩者都做。程式碼很單純,實作起來相當容易,基本上只需要把現有訊息再加上一些屬性設定即可。
很有趣吧,而且視覺效果明顯,尤其適合多場景、多身分的動態切換需求,可以作為除了圖文選單之外的另類方案,應該能夠收到許多意想不到的用戶回饋,現在就動手試試看唄!