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}/messages
bir 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}/messages
POST /api/conversations/{conversationId}/upload
ekleri 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}/upload
uç POST
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-data
Content-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.message
belirten 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]