2017-05-09 4 views
1

ボットにpdfファイルを送信してもらいたいです。ただ、(私が必要)電報やFacebookボットをエミュレータ内でBotのフレームワーク:pdfファイル

Attachment attachment1 = new Attachment(); 
attachment1.Name = "name.pdf"; 
attachment1.ContentType = "application/pdf"; 
attachment1.ContentUrl = "data:application/pdf;base64," + base64String; 

var m = context.MakeMessage(); 
m.Attachments.Add(attachment1); 
m.Text = "File"; 

await context.PostAsync(m); 

、それだけでは動作しませんが、チャンネル内:私は、base64文字列としてPDFを持っており、添付ファイルを通してそれを送信しようとしましたエラーを出力します...

すでに誰かが成功しているので、

注:httpアドレスを使用すると正常に動作しますが、私はbotframeworkコールsendDocument電報の方法、及びそのdocumentプロパティのget HTTP URLまたはのfile_idで、この方法では、この方法としてはbase64文字列

+0

実際、私のやり方はうまくいきました。私のbase64文字列が唯一の問題は大きすぎます(ファイルが大きすぎます)。テレグラムが50MBまでファイルを扱うことになって以来、奇妙に思われる... – Ynnad

答えて

1

を使用する必要があり、このメソッドにbase64Stringを有効なドキュメントタイプとして渡すことはできません。

this linkでテレグラムに渡された有効なタイプの文書に従うこともできます(次の画像も参照)。

enter image description here

0

pdfファイルは、リソースを埋め込まなければなりません。それが助けて欲しい。

if (this.channelid == "telegram") 
{ 
    var url = string.Format("https://api.telegram.org/bot{0}/sendDocument", Settings.tokentelegram); 

    Assembly _assembly; 
    Stream file; 

    using (var form = new MultipartFormDataContent()) 
    { 
     form.Add(new StringContent(this.chat_id, Encoding.UTF8), "chat_id"); 

     _assembly = Assembly.GetExecutingAssembly(); 
     file = _assembly.GetManifestResourceStream("Namespace.FolderResourses.name.pdf); 

     form.Add(new StreamContent(file), "document", "name.pdf"); 

     using (var client = new HttpClient()) 
     { 
      await client.PostAsync(url, form); 
     } 
    } 
} 
関連する問題