Open odaki opened 1 year ago
使っていただけて嬉しいです。ご報告ありがとうございます。 早速取り込んでみましたが、送信処理の最中に例外が発生してしまいました(3回くらい試しました)。 送信先によって挙動が異なるのかもしれません。私の場合はGmailに送信しています。 半角カナを使用しなければ改善する可能性はあるでしょうか?苦肉の策として、"スタックチャン"を全角にして 試してみていただけないでしょうか。
ご確認ありがとうございます。
送信先もGMailにして試してみました。 私の場合、おおむね半角でも全角でも成功します。
<全角化>
message.subject = "=?utf-8?B?44K544K/44OD44Kv44OB44Oj44Oz44GL44KJ44Gu6YCa55+l?="; // "スタックチャンからの通知"
おおむね成功、と書いたのは、ファームを書き換えた直後の初回「メモメールして」で guru meditation error (だいたいNULL参照) で落ちていたからです。
ログをみてみると、OpenAIが依頼をメモ保存(save_note)と誤認識したのが理由みたいでした。
save_note
{}
Guru Meditation Error: Core 1 panic'ed (LoadProhibited). Exception was unhandled.
Core 1 register dump:
PC : 0x4008bee7 PS : 0x00060430 A0 : 0x80118f33 A1 : 0x3ffb1ee0
A2 : 0x3ffc5068 A3 : 0x00000000 A4 : 0x00000001 A5 : 0x3ffb1e98
A6 : 0x3ffea160 A7 : 0x3ffea16c A8 : 0x00000000 A9 : 0x00000000
A10 : 0x00000001 A11 : 0x3ffea1d4 A12 : 0x0000f000 A13 : 0x3f4b3320
A14 : 0x00008000 A15 : 0x00008000 SAR : 0x00000019 EXCCAUSE: 0x0000001c
EXCVADDR: 0x00000000 LBEG : 0x4008bf44 LEND : 0x4008bf4f LCOUNT : 0x00000000
Backtrace: 0x4008bee4:0x3ffb1ee0 0x40118f30:0x3ffb1f00 0x40119056:0x3ffb1f20 0x400d6746:0x3ffb1f40 0x400d728e:0x3ffb1fb0 0x400dc617:0x3ffb2080 0x400dd0f2:0x3ffb2130 0x400dd64b:0x3ffb21f0 0x400dd904:0x3ffb2240 0x4011bfe5:0x3ffb2290
#0 0x4008bee4:0x3ffb1ee0 in memmove at /builds/idf/crosstool-NG/.build/HOST-x86_64-apple-darwin12/xtensa-esp32-elf/src/newlib/newlib/libc/string/memmove.c:66
#1 0x40118f30:0x3ffb1f00 in String::move(String&) at /Users/odaki/.platformio/packages/framework-arduinoespressif32/cores/esp32/WString.cpp:237
#2 0x40119056:0x3ffb1f20 in String::operator=(String&&) at /Users/odaki/.platformio/packages/framework-arduinoespressif32/cores/esp32/WString.cpp:277
#3 0x400d6746:0x3ffb1f40 in save_note(char const*) at src/FunctionCall.cpp:335 (discriminator 1)
#4 0x400d728e:0x3ffb1fb0 in exec_calledFunc(ArduinoJson::V6213PB2::BasicJsonDocument<ArduinoJson::V6213PB2::DefaultAllocator>, String*) at src/FunctionCall.cpp:614
#5 0x400dc617:0x3ffb2080 in chatGpt(String, String*) at src/main.cpp:352
#6 0x400dd0f2:0x3ffb2130 in exec_chatGPT(String) at src/main.cpp:436 (discriminator 1)
#7 0x400dd64b:0x3ffb21f0 in SST_ChatGPT() at src/main.cpp:1332 (discriminator 1)
#8 0x400dd904:0x3ffb2240 in loop() at src/main.cpp:1413
#9 0x4011bfe5:0x3ffb2290 in loopTask(void*) at /Users/odaki/.platformio/packages/framework-arduinoespressif32/cores/esp32/main.cpp:50
なかなか制御が難しいものだなぁ、と思いました。
おそらく関係ないとは思いますが、私は m5stack/M5Unified @ 0.1.8 meganetaaan/M5Stack-Avatar@^0.8.6 にして試しています。
何かご参考になれば。
ご確認ありがとうございました。 送信先がGmailの場合もMIMEエンコーディングでうまくいくんですね。 私の場合はMIMEにすると例外発生したので。。。 こちらでももう少し試してみます。
ちなみに、メモ経由でなくても、 「~をメールして」 で、直接メールを送信することもできます。
m5stack/M5Unified @ 0.1.8 meganetaaan/M5Stack-Avatar@^0.8.6 にして試しています。
うーん、バージョン合わせてもだめですね。。。 ただ、CoreS3ならMIMEでうまくいきました(MIMEで落ちるのはCore2)。 とりあえず半角カナはあぶなそうなので、暫定処置として次のアップデートで全角にしておきます。 恒久対策はMIMEにしたいですが、Core2でうまくいってからにしたいと思います。
こんにちは。 楽しくて便利な機能を実装されていて楽しみながら勉強させていただいています。
さきほど早速E-Mail機能を試しました。 結果、Subjectが文字化けして届きました。 EMailSenderの実装を見ましたら、Subjectはベタに指定文字列を書いているだけのようです。 https://github.com/xreef/EMailSender/blob/87a411fe75f9d60009cb3141bc47bf7fbf3f7930/EMailSender.cpp#L732
単純に渡す文字列をMIMEエンコーディング(コードはUTF-8)したら解決しましたので 取り込んでいただければ幸いです。
<変更前> https://github.com/ronron-gh/AI_StackChan2_FuncCall/blob/85cb520e32970c7f8d2a0ba10c460bc96fb7cc10/AI_StackChan2_FuncCall/src/FunctionCall.cpp#L483
<変更後>
message.subject = "=?utf-8?B?7729776A772v7724776B772s776d44GL44KJ44Gu6YCa55+l?="; // "スタックチャンからの通知"