結論:chat:write.customizeが必要
ドキュメントを見ると、iconの変更、usernameの変更には、as_user:falseが必要と書いてある
https://api.slack.com/methods/chat.postMessage
が、その通りにするとエラーになる。
{"ok":false,"error":"invalid_arguments","deprecated_argument":"as_user"}
上記のドキュメントの下の方に、さらっと
Please note that the as_user parameter may not be used by new Slack apps. Read more about Authorship to understand how as_user works for classic Slack apps.
とかかれており、この方法は正しくない。
This is a powerful ability and must only be used when the user themselves gives permission to do so. For this reason, this ability is only available when an app has requested and been granted an additional scope — chat:write.customize.
というわけで、as_userは使わず、Slackアプリに chat:write.customize 権限を付加すれば、usernameの変更、iconの変更(icon_emoji, icon_url)が可能になる。
おまけ: アイコンの英語名の表示の仕方
Slackのアイコンは日本語名がついている場合、それが表示される。Slack APIで使う場合は英語名が良いので、それを表示する方法。
まずはメッセージ書き込みウインドウでアイコン選んで入力する。入力されたアイコンにマウスカーソルを重ねると、アイコンの英語名が表示されます。