2016-10-07 1 views
3

매 순간마다 코드 (MS Bot Framework, Azure에서 호스팅되는 C#)를 실행할 방법을 찾고 있습니다. 사람은 Yammer에 언급되거나 직접 메시지를받습니다.사람이 언급 될 때마다 webservice를 호출하거나 코드를 실행하고 Yammer 및 Bot Framework에서 비공개 메시지를 수신합니다.

내가 시도한 두 가지 방법 :

1) 지금 불평의 이메일 알림을 활성화하고 [email protected]에서 이메일에 대한 사서함을 볼 수 있습니다에 대한 해낸 가장. Microsoft의 Bot Framework에는 전자 메일 모니터링을위한 원 클릭 설정이있어 작동합니다.

그러나 알림 전자 메일은 15 분 지연되어 도착하므로 거의 즉각적인 성능이 필요하므로이 방법은 쓸모가 없습니다.

if (activity.ChannelId == "email" && activity.From.Id == "[email protected]") 
    { 
     var newActivity = activity.CreateReply(); 

     //doesn't work, sends email back to the activity.From.Id 
     newActivity.Recipient.Id = "[email protected]"; 
     newActivity.Text = "I got a message from " + activity.From.Name + "!"; 
     BotUtils.SendActivityToChat(newActivity); 
    } 

내가 할 수있는 :

마지막으로, MS 봇 프레임 워크가 이메일을 보낸 이메일 주소로 회신 것 때문에이 방법은 단순히 오히려 사용자가 지정한 하나, 작동하지 않는 것 같습니다 전자 메일을 임의의받는 사람에게 보내는 코드를 작성하십시오. 그러나 15 분 지연으로 인해 여전히 문제가 있습니다.

2) Yammer의 API를 매분마다 폴링하여 새 메시지가 있는지 확인하는 방법이 있지만 아직 순간적이지 않습니다. API 폴링을 계속하면 내 계정이 금지되는지 잘 모르겠습니다. 너무 자주. (업데이트 : 공식적인 금리 제한은 1 분당 1 회 투표입니다. 그렇지 않으면 투표가 금지됩니다.)

내가 놓친 것이 있습니까? Yammer에서 메시지 나 언급을 얻을 때마다 코드를 실행하는 방법은 무엇입니까?

+1

입니다. CreateReply() 대신에 새로운 이메일을 만들 수 있습니까? – sashoalm

+1

폴링 정보 : https://developer.yammer.com/docs/rest-api-rate-limits - API 호출은 속도 제한의 영향을받습니다. 모든 속도 한계를 초과하면 모든 엔드 포인트가 429 (너무 많은 요청)의 상태 코드를 리턴합니다. 요금 한도는 앱당 사용자 당입니다. 속도 제한에는 다음과 같은 네 가지가 있습니다. 자동 완료 : 10 초 안에 10 개의 요청이 있습니다. 메시지 : 30 초 내에 10 개의 요청. 알림 : 30 초 내에 10 건의 요청. 기타 리소스 : 10 초 내에 10 건의 요청. – sashoalm

+0

@sashoalm 불행히도 속도 제한에 대한 동일한 페이지에는 "메시지 폴링시 1 분당 1 회의 폴링을 초과하지 마십시오. 폴링이 과도하게 발생하는 앱은 차단됩니다." 나는 새로운 이메일을 보내려고 노력할 것이다. 감사! – K48

답변

1

BotFramework는 보낸 사람과 다른 주소로 메시지에 회신하는 것을 허용하지 않습니다. 그러나 수신자가 봇이 이전에 메시지를 수신 한 경우 수신자에게 사전 메시지를 보낼 수 있습니다. 사전 대책 메시지를 보내려면 ServiceUrl과 사용자의 ChannelAccount (해당 사용자의 메시지 중 하나에서 추출한)를 유지하고이 데이터를 사용하여 봇에서 해당 사용자에게 새로운 활동을 보냅니다. 여기

은 여기 example in C#

이다 응답, 어쩌면 프레임 워크는 당신이 보낸 사람보다 다른 주소에 댓글을 올리려면 허용하지 않습니다에 대한 example in Node.js

관련 문제