Aracılığıyla paylaş


Direct Line API 1.1'de bota ileti gönderme

Önemli

Bu makalede, Direct Line API 1.1 kullanılarak bota ileti gönderme açıklanmaktadır. İstemci uygulamanızla botunuz arasında yeni bir bağlantı oluşturuyorsanız bunun yerine Direct Line API 3.0 kullanın.

İstemciler Direct Line 1.1 protokollerini kullanarak botlarla ileti alışverişi yapabilir. Bu iletiler bot tarafından desteklenen şemaya dönüştürülür (Bot Framework v1 veya Bot Framework v3). İstemci, istek başına tek bir ileti gönderebilir.

İleti gönderme

Bota ileti göndermek için, istemcinin iletiyi tanımlamak için bir message nesnesi oluşturması ve ardından isteğin gövdesinde message nesnesini belirterek adresine https://directline.botframework.com/api/conversations/{conversationId}/messagesbir POST istek göndermesi gerekir.

Aşağıdaki kod parçacıkları İleti Gönder isteği ve yanıtının bir örneğini sağlar.

İstek

POST https://directline.botframework.com/api/conversations/abc123/messages
Authorization: Bearer RCurR_XV9ZA.cwA.BKA.iaJrC8xpy8qbOF5xnR2vtCX7CZj0LdjAPGfiCpg4Fv0
[other headers]
{
  "text": "hello",
  "from": "user1"
}

Yanıt

İleti bota teslim edildiğinde, hizmet botunun durum kodunu yansıtan bir HTTP durum koduyla yanıt verir. Bot bir hata oluşturursa, İleti Gönder isteğine yanıt olarak istemciye bir HTTP 500 yanıtı ("İç Sunucu Hatası") döndürülür. POST başarılı olursa, hizmet bir HTTP 204 durum kodu döndürür. Yanıtın gövdesinde hiçbir veri döndürülmedi. İstemcinin iletisi ve bottan gelen tüm iletiler yoklama yoluyla alınabilir.

HTTP/1.1 204 No Content
[other headers]

İleti Gönderme isteğinin/yanıtının toplam süresi

bir Direct Line konuşmaya ileti göndermenin toplam süresi aşağıdakilerin toplamıdır:

  • HTTP isteğinin istemciden Direct Line hizmetine geçiş süresi
  • Direct Line içindeki iç işleme süresi (genellikle 120 m'den az)
  • Direct Line hizmetinden bota geçiş süresi
  • Bot içindeki işlem süresi
  • HTTP yanıtının istemciye geri dönmesi için aktarım süresi

Ekleri bota gönderme

Bazı durumlarda, istemcinin bota görüntüler veya belgeler gibi ekler göndermesi gerekebilir. İstemci, kullanarak gönderdiği İleti nesnesi içindeki eklerin URL'lerini belirterek veya kullanarak POST /api/conversations/{conversationId}/messagesPOST /api/conversations/{conversationId}/uploadekleri karşıya yükleyerek bota ek gönderebilir.

Ekleri URL'ye göre gönderme

kullanarak POST /api/conversations/{conversationId}/messagesİleti nesnesinin bir parçası olarak bir veya daha fazla ek göndermek için, iletinin dizisi ve/veya attachments dizisi içindeki ek URL'lerini images belirtin.

Karşıya yükleyerek ekleri gönderme

Genellikle, bir istemcinin bota göndermek istediği bir cihazda görüntüleri veya belgeleri olabilir, ancak bu dosyalara karşılık gelen URL'ler olmayabilir. Bu durumda istemci, karşıya yükleyerek bota ek gönderme isteği gönderebilir POST /api/conversations/{conversationId}/upload . İsteğin biçimi ve içeriği, istemcinin tek bir ek mi yoksabirden çok ek mi gönderdiğine bağlıdır.

Karşıya yükleyerek tek bir ek gönderme

Karşıya yükleyerek tek bir ek göndermek için şu isteği gönderin:

POST https://directline.botframework.com/api/conversations/{conversationId}/upload?userId={userId}
Authorization: Bearer SECRET_OR_TOKEN
Content-Type: TYPE_OF_ATTACHMENT
Content-Disposition: ATTACHMENT_INFO
[other headers]

[file content]

Bu istek URI'sinde {conversationId} öğesini konuşmanın kimliğiyle, {userId} öğesini de iletiyi gönderen kullanıcının kimliğiyle değiştirin. İstek üst bilgilerinde, ekin türünü belirtmek için ayarlayın Content-Type ve ekin dosya adını belirtmek için ayarlayın Content-Disposition .

Aşağıdaki kod parçacıkları, Gönder (tek) Ek isteği ve yanıtının bir örneğini sağlar.

İstek

POST https://directline.botframework.com/api/conversations/abc123/upload?userId=user1
Authorization: Bearer RCurR_XV9ZA.cwA.BKA.iaJrC8xpy8qbOF5xnR2vtCX7CZj0LdjAPGfiCpg4Fv0
Content-Type: image/jpeg
Content-Disposition: name="file"; filename="badjokeeel.jpg"
[other headers]

[JPEG content]

Yanıt

İstek başarılı olursa, karşıya yükleme tamamlandığında bota bir ileti gönderilir ve hizmet bir HTTP 204 durum kodu döndürür.

HTTP/1.1 204 No Content
[other headers]

Karşıya yükleyerek birden çok ek gönderme

Karşıya yükleyerek birden çok ek göndermek için /api/conversations/{conversationId}/uploadPOST noktaya çok parçalı bir istek gönderilir. her ekin Content-Type türünü ve dosya adını belirtmek için isteğin multipart/form-dataContent-Type üst bilgisini olarak ayarlayın ve Content-Disposition her bölümün üst bilgisini ve üst bilgisini ekleyin. İstek URI'sinde, parametresini userId iletiyi gönderen kullanıcının kimliğine ayarlayın.

üst bilgi değerini application/vnd.microsoft.bot.messagebelirten bir bölüm ekleyerek isteğin Content-Type içine bir message nesnesi ekleyebilirsiniz. Bu, istemcinin ekleri içeren iletiyi özelleştirmesine olanak tanır. İstek bir İleti içeriyorsa, yükün diğer bölümleri tarafından belirtilen ekler gönderilmeden önce bu İletiye ek olarak eklenir.

Aşağıdaki kod parçacıkları, Gönder (birden çok) Ek isteği ve yanıtının bir örneğini sağlar. Bu örnekte istek, bir miktar metin ve tek bir resim eki içeren bir ileti gönderir. bu iletiye birden çok ek eklemek için isteğe ek bölümler eklenebilir.

İstek

POST https://directline.botframework.com/api/conversations/abc123/upload?userId=user1
Authorization: Bearer RCurR_XV9ZA.cwA.BKA.iaJrC8xpy8qbOF5xnR2vtCX7CZj0LdjAPGfiCpg4Fv0
Content-Type: multipart/form-data; boundary=----DD4E5147-E865-4652-B662-F223701A8A89
[other headers]

----DD4E5147-E865-4652-B662-F223701A8A89
Content-Type: image/jpeg
Content-Disposition: form-data; name="file"; filename="badjokeeel.jpg"
[other headers]

[JPEG content]

----DD4E5147-E865-4652-B662-F223701A8A89
Content-Type: application/vnd.microsoft.bot.message
[other headers]

{
  "text": "Hey I just IM'd you\n\nand this is crazy\n\nbut here's my webhook\n\nso POST me maybe",
  "from": "user1"
}

----DD4E5147-E865-4652-B662-F223701A8A89

Yanıt

İstek başarılı olursa, karşıya yükleme tamamlandığında bota bir ileti gönderilir ve hizmet bir HTTP 204 durum kodu döndürür.

HTTP/1.1 204 No Content
[other headers]

Ek kaynaklar