Я работаю над созданием слабого бота с использованием ASP.NET Core API C #.Я успешно могу использовать команду слеш и отправлять сообщения, используя входящие веб-хуки.Одно из требований, которое у меня есть, - это открыть диалог нажатием кнопки.Я пробовал разные способы получить это, но я не могу найти правильный способ открыть Dailog из API.Я уже просмотрел документацию на https://api.slack.com/dialogs, но не смог открыть dailog.
Буду признателен за любую помощь !!
ниже - один из способов, которые я попробовал:
namespace SlackAPICore.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class ButtonEventController : ControllerBase
{
[HttpPost]
[Produces("application/json")]
public void HandleCommand(string slashCommandPayload)
{
var response_url = JsonConvert.DeserializeObject<response_Url> Request.Form["payload"]);
string eventUrl = "https://slack.com/api/dialog.open?token=" + response_url.token+ "&trigger_id="+ response_url.trigger_id;
SlackClient client = new SlackClient(eventUrl);
string readContents="";
using (StreamReader streamReader = new StreamReader("E:\\slack\\SlackAPICore\\SlackAPICore\\JSONData\\newEvent.json", Encoding.UTF8))
{
readContents = streamReader.ReadToEnd();
}
client.PostMessage(JsonConvert.SerializeObject(readContents));
}
}
public class response_Url
{
public string response_url { get; set; }
public string trigger_id { get; set; }
public string token { get; set; }
}
}
Slack Код клиента:
public class SlackClient
{
private readonly Uri _uri;
private readonly Encoding _encoding = new UTF8Encoding();
public SlackClient(string urlWithAccessToken)
{
_uri = new Uri(urlWithAccessToken);
}
//Post a message using a Payload object
public void PostMessage(string payload)
{
using (WebClient client = new WebClient())
{
NameValueCollection data = new NameValueCollection();
data["payload"] = payload;
var response = client.UploadValues(_uri, "POST", data);
client.DownloadData(_uri);
//The response text is usually "ok"
string responseText = _encoding.GetString(response);
}
}
}
образец файла JOSN:
{"dialog": {
"callback_id": "ryde-46e2b0",
"title": "Request a Ride",
"submit_label": "Request",
"notify_on_cancel": true,
"state": "Limo",
"elements": [
{
"type": "text",
"label": "Pickup Location",
"name": "loc_origin"
},
{
"type": "text",
"label": "Dropoff Location",
"name": "loc_destination"
}
]
}}
Заранее спасибо