Webex TeamsチャットアプリにAPIを使いテキスト送信しようとしたこところで詰まりました。
テキストの出力表示としては下記のようにしたいです。
#理想の出力表示 [8/31 13:21:23] 入室状況 入室者◯名 AA:AA:AA:AA:AA:AAさん(◯時◯分) email:apple@gmail.com BB:BB:BB:BB:BB:BBさん(◯時◯分) 退室者◯名 CC:CC:CC:CC:CC:CCさん(◯時◯分) DD:DD:DD:DD:DD:DDさん(◯時◯分) #今までの出力表示 [8/22 11:39:44]AA:AA:AA:AA:AA:AAさんが入室しました email:apple@gmail.com -------------------------------------------------------------- [8/22 11:39:59]BB:BB:BB:BB:BB:BBさんが入室しました -------------------------------------------------------------- [8/22 11:40:00]CC:CC:CC:CC:CC:CCさんが退室しました 滞在時間:5分47秒 -------------------------------------------------------------- [8/22 11:00:00]DD:DD:DD:DD:DD:DDさんが退室しました 滞在時間:1時間13分43秒 -------------------------------------------------------------- 〜現在の入室状況〜 新規入室者:2人 退室者:2人 入室中:23人 --------------------------------------------------------------
ruby
1message = CiscoSpark::Message.new(text:"[timenow] 入室状況\n入室者#{mac_last_count}名\n 2 #{} 3 退室者#{mac_exit.count}名\n 4 #{}") 5room = CiscoSpark::Room.new(id: roomid) 6room.send_message(message)
今までは入室・退室・入室状況と分けてそれぞれに繰り返しメソッドで送ってました。
それを上記のようにして、一回の送信でテキストを送りたいです。
問題は、入室者のAAさんBBさんなど、今まで繰り返しメソッドでハッシュの値を出力していたのを一回のテキストの中に
どう入れればいいかがわかりません。
一度、今までと同様にコードを#{}の中に入れて、#{time_save.each {|x,y| }}と入れてみましたが、eachメソッドが動かず、ただハッシュが表示されてしまいます。
どうやら、#{}の中ではeachメソッドが使えないみたいです。
そこでどう変えたらいいでしょうか??
下記は今までのコードです
ruby
1#入室送信 2#personal_infoはMACアドレスをkeyに,個人情報をValuにしたハッシュ 3#該当MACアドレスに個人情報のデータがあれば付与して出力するようにしている 4time_save.each do |x,z| 5 personal_info = new_data[x].map{|k, v| v.present? ? " #{k} : #{v}": nil} 6 message = CiscoSpark::Message.new(text:"[#{z}] #{x}さんが入室しました\n 7#{personal_info.map(&:to_s).join("\n") }\n--------------------------------------------------------------") 8 room = CiscoSpark::Room.new(id: room_id) 9 room.send_message(message) 10end 11 12#退室送信 13h = {} 14 mac_before.each{ |x| h[x] = (@timenow - Entry.where(macaddr:x).last.time.to_time).to_i} 15 timenow = Time.now.strftime("%m/%d %H:%M:%S") 16 #mac_before_timeは退室者のMACアドレスをKey、滞在時間をValuにしたハッシュ 17 mac_before_time = h.sort_by{|k,v| v}.to_h 18 mac_before_time.each do |k,v| 19 hour = v / 3600 20 minute = v / 60 21 second = v % 60 22 if !(hour == 0) 23 stay = "#{hour}時間#{(v-hour*3600)/60}分#{second}秒" 24 elsif !(minute == 0) 25 stay = "#{minute}分#{second}秒" 26 else 27 stay = "#{second}秒" 28 end 29 30 message = CiscoSpark::Message.new(text: "[#{timenow}] #{k}さんが退室しました\n 滞在時間:#{stay}\n--------------------------------------------------------------") 31 room = CiscoSpark::Room.new(id: room_id) 32 room.send_message(message) 33 end 34 35#現在の入室状況を送信 36 message = CiscoSpark::Message.new(text:"[#{timenow}] 入室状況\n 37 新規入室者:#{time_save.count}人\n 38 退室者:#{mac_before.count}人\n 39 入室中:#{macaddr_last_count}人\n--------------------------------------------------------------") 40 room = CiscoSpark::Room.new(id: room_id) 41 room.send_message(message) 42 43 44
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。