2014-07-15 7 views
1

지금까지 사용자에게 정수 (1, 2, 3, 4 또는 5 선택 항목)를 메시지에 대한 가능한 회신으로 보내달라고 요청했습니다. 그런 다음 다음 메시지로 이동하기 전에 사용자에게 정수를 제공합니다.사용자 입력 녹음 및 보내기

Messages = [ 
{"1"=>"You chose 1.", 
"2"=>"You chose 2.", 
"message"=> "Pick 3 or 4. 3) Apples 4) Oranges."}, 

{"3"=>"You chose Apples.", 
"4"=>"You chose Oranges.", 
"message"=>"Pick 1 or 2. 1) [something] 2) [something]"}, 
] 

나는 다음과 같은 호출 내 메시지를 렌더링 : 그래서 내 메시지는 다음과 같은 구조 있었다

say "#{messages[$status.to_i][$reply]} #{messages[$status.to_i]['message']}" 

는 지금은 입력 뭔가 사용자가 필요를 원래의 말처럼, 출생의 그/그녀의 날짜 (예 : 07May90은 가능한 완전한 입력이 될 수 있음). 그래서 나는 다음과 같은 경우가 필요하다.

Messages = [ 
{"1"=>"You chose 1.", 
"2"=>"You chose 2.", 
"message"=> "What is your date of birth?"}, 

{"DoB"=>"You chose [whatever user inputs e.g. 07May90].", 
"message"=>"Pick 1 or 2. 1) [something] 2) [something]"}, 
] 

어떻게 원래 입력을 사용자에게 다시 표시 할 수 있습니까? DoB 질문에 07May90을 입력하여 응답 한 경우 "YouMose 07May90"이라고 말하고 싶습니다. (상술 한 바와 같이). 떠오르는

+0

음, 요청 처리를 개선하고 사용자가 생년월일을 입력했는지 확인하기위한 방법 (예 : RegEx를 통해)을 찾아야합니다. 답장을 처리 할 때 사용하는 코드를 표시하지 않으므로 대답하기가 매우 어려워집니다. 우리가 당신의'Messages' 해쉬를 볼 수 있다면 제안을하기가 정말로 어렵습니다. – Patru

+0

요청 처리를 개선하는 방법을 잘 모르겠습니다. 그것은 정확하게 나의 질문입니다. 조사하고 싶다면 답을 처리하고 데이터베이스를 업데이트하는 데 사용되는 코드를 추가하는 질문을 편집했습니다. 나는 이것이 실행 가능한 제안을하기 쉽게 만들어주기를 바랍니다. – msc

+0

'updateCouchDBData' 메소드가 문제의 일부를 드러내는 것 같아요. 한 번에 너무 많은 일을하려고합니다. 이것은 거의 인식 할 수 없을 때까지 사물을 혼란스럽게합니다. 먼저 세션 찾기 코드를 나머지 코드와 구분하여'find_session'과 같은 메소드에 넣고 세션을 찾은 경우에만 진행해야합니다. 그러면 위의 코드에서 언급 한'$ reply'가'추측 * '한'extra' 매개 변수를 계속해서 해석 할 수 있습니다. 솔직히 말해서, 두 부분은 현재 서로 거의 관계가없는 것처럼 보입니다. – Patru

답변

0

한 가지 방법은 그것은 특히 꽤 마음에 당신이 아니에요 sprintf

message = "You picked %s" 
value = "07May90" 
puts sprintf(message, value) 

사용하는 것입니다,하지만 그것은 작동합니다.

+0

지적 해 주셔서 고맙습니다. sprintf (message, value) 문은 어디에서나 메시지를 인쇄하지 않기 때문에 어디로 갈 것인지 확실하지 않습니다. 그것은 사용자에게 보내야하기 때문에 메시지 해시의 값이되어야합니다. 그러나 그 값은 대개 문자열이므로 제안을 구현하는 방법을 모르겠습니다. – msc

+0

sprintf는 문자열을 반환합니다. 풋에 넣을 필요는 없지만 원하는 곳에 보낼 수 있습니다. –

+0

귀하의 제안은 어떻게 진행되고 있다고 생각하십니까? 생각 나는 것은 다음과 같습니다 : 메시지 = [ { "1"=> ​​"당신은 1을 선택했습니다.", "2"=> "2를 선택했습니다.", "message"=> "버스 번호를 입력하십시오 . "}, 은 {"값 "=>"생년월일은 % s '에, "메시지가 당신의 응답을"=> "감사합니다."}, ] 인 경우와 풋의 sprintf 문은 어떻게 될 것 이것에 통합 되었습니까? – msc