Aracılığıyla paylaş


Direct Line API 3.0'da bota etkinlik gönderme

Direct Line 3.0 protokolünün kullanılmasıyla istemciler ve botlar iletietkinlikleri, yazma etkinlikleri ve botun desteklediği özel etkinlikler gibi çeşitli etkinlik türlerini değiştirebilir. İstemci, istek başına tek bir etkinlik gönderebilir.

Etkinlik gönderme

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

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

İstek

POST https://directline.botframework.com/v3/directline/conversations/abc123/activities
Authorization: Bearer RCurR_XV9ZA.cwA.BKA.iaJrC8xpy8qbOF5xnR2vtCX7CZj0LdjAPGfiCpg4Fv0
Content-Type: application/json
[other headers]
{
    "locale": "en-EN",
    "type": "message",
    "from": {
        "id": "user1"
    },
    "text": "hello"
}

Yanıt

Etkinlik bota teslim edildiğinde, hizmet botunun durum kodunu yansıtan bir HTTP durum koduyla yanıt verir. Bot bir hata oluşturursa, Gönderme Etkinliği isteğine yanıt olarak istemciye bir HTTP 502 yanıtı ("Hatalı Ağ Geçidi") döndürülür.

Not

Bunun nedeni doğru belirtecin kullanılmamış olması olabilir. Etkinlik göndermek için yalnızca konuşma başlatma sırasında alınan belirteç kullanılabilir.

POST başarılı olursa yanıt, bota gönderilen Etkinliğin kimliğini belirten bir JSON yükü içerir.

HTTP/1.1 200 OK
[other headers]
{
    "id": "0001"
}

Etkinlik 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 Etkinlik nesnesi içindeki eklerin URL'lerini belirterek veya kullanarak POST /v3/directline/conversations/{conversationId}/activitiesPOST /v3/directline/conversations/{conversationId}/uploadekleri karşıya yükleyerek bota ek gönderebilir.

Ekleri URL'ye göre gönderme

kullanarak POST /v3/directline/conversations/{conversationId}/activitiesActivity nesnesinin bir parçası olarak bir veya daha fazla ek göndermek için, Activity nesnesine bir veya daha fazla Ek nesnesi ekleyin ve ekin HTTP, HTTPS veya data URI'sini belirtmek için her Ek nesnesinin özelliğini ayarlayıncontentUrl.

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 /v3/directline/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/v3/directline/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. userId parametresi zorunludur. İ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/v3/directline/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 Etkinlik iletisi gönderilir ve istemcinin aldığı yanıt gönderilen Etkinliğin kimliğini içerir.

HTTP/1.1 200 OK
[other headers]
{
  "id": "0003"
}

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

Karşıya yükleyerek birden çok ek göndermek için /v3/directline/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.activitybelirten bir Activity bölüm ekleyerek isteğin Content-Type içine bir nesnesi ekleyebilirsiniz. İstek bir Etkinlik içeriyorsa yükün diğer bölümleri tarafından belirtilen ekler gönderilmeden önce bu Etkinliğe ek olarak eklenir. İstek bir Etkinlik içermiyorsa, belirtilen eklerin gönderildiği kapsayıcı görevi görecek boş bir Etkinlik oluşturulur.

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/v3/directline/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.activity
[other headers]

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

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

Yanıt

İstek başarılı olursa, karşıya yükleme tamamlandığında bota bir Etkinlik iletisi gönderilir ve istemcinin aldığı yanıt gönderilen Etkinliğin kimliğini içerir.

HTTP/1.1 200 OK
[other headers]
{
    "id": "0004"
}

Ek kaynaklar