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}/activities
gö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}/activities
POST /v3/directline/conversations/{conversationId}/upload
ekleri karşıya yükleyerek bota ek gönderebilir.
Ekleri URL'ye göre gönderme
kullanarak POST /v3/directline/conversations/{conversationId}/activities
Activity 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}/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.activity
belirten 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"
}