Ankündigung

Einklappen
Keine Ankündigung bisher.

Siri-Proxy - wer hat know how und will mitbasteln?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • fmeister
    antwortet
    Zitat von makki Beitrag anzeigen
    Ziel: SiriProxy on WireGate, aber "the Debian way", komplette Buildumgebung installieren und das ganze rake-rvm-Zeugs geht ja mal wirklich garnicht! Das muss sich ja auch in richtig realisieren lassen..
    endlich mal wer, der meine Sprache spricht das ganze Zeugs manuell zusammen kompilieren funktioniert zwar, viel schöner wäre aber wirklich ein .deb Paket.

    Hab das Ding am laufen - und liebe es - trotzdem, mit .deb wär wesentlich schöner Vielleicht findet sich ja jemand der entsprechendes know-how mit ruby & buildpkg hat ...

    Einen Kommentar schreiben:


  • ThorstenGehrig
    antwortet
    Hm - nö.
    Weil: da wird ja der DNS gefragt - und der ist ja auf die VM umgebogen wo der Siri-Proxy läuft. Also würde er sich selbst als Antwort bekommen.

    Ich frag mich wie das anders gehen soll - eigentlich müsste ich nur einen externen DNS fragen - aber wie? (in Ruby)

    Gruß
    Thortsen

    Einen Kommentar schreiben:


  • vento66
    antwortet
    stimmt, aber geht das bei Dir nicht mit
    self.other_connection = EventMachine.connect("guzzoni.apple.com")
    ?

    Einen Kommentar schreiben:


  • ThorstenGehrig
    antwortet
    Seit dem Stammtisch :-)
    Du machst die Namensauflösung aber anders als ich, oder?
    (kein DNSMasq - statischer DNS auf dem iPhone...)

    Gruß
    Thorsten

    Einen Kommentar schreiben:


  • vento66
    antwortet
    Seit wann hattest Du das Problem? Bei mir funktionierst noch.


    Sent from my iPad using Tapatalk

    Einen Kommentar schreiben:


  • ThorstenGehrig
    antwortet
    Hi,
    falls der Siri-Proxy bei euch nicht mehr Funktioniert:
    Ich musste in
    plamoni-SiriProxy-5982ab6/siri_proxy/connection/iphone.rb
    die Adresse des Proxys ändern:
    self.other_connection = EventMachine.connect('17.130.16.4'

    Gruß
    Thorsten

    Einen Kommentar schreiben:


  • makki
    antwortet
    Ich muss mich jetzt wohl einklinken, obwohl ich sowas nie haben werde..
    -> Ist hier jemand zugegen, der sich mit dem Ruby-sums auskennt (ich fahre nicht Zug ) und mich in die richtige Richtung schubsen kann?

    Ziel: SiriProxy on WireGate, aber "the Debian way", komplette Buildumgebung installieren und das ganze rake-rvm-Zeugs geht ja mal wirklich garnicht! Das muss sich ja auch in richtig realisieren lassen..

    Debian-Paket für ruby 1.9.3-p0 ist bereits erledigt, aber wie macht man jetzt aus dem Zeug im GIT etwas, das normale Menschen einfach ausführen können? Gepackaged bekomme ich das dann schon, aber:

    Code:
    markstaller@Elab18:~/WG_debs/SiriProxy$ rake1.9.3 --trace install
    rake aborted!
    cannot load such file -- bundler/gem_tasks
    /usr/lib/ruby/1.9.3/rubygems/custom_require.rb:36:in `require'
    /usr/lib/ruby/1.9.3/rubygems/custom_require.rb:36:in `require'
    /home/markstaller/WG_debs/SiriProxy/Rakefile:3:in `<top (required)>'
    /usr/lib/ruby/1.9.3/rake/rake_module.rb:25:in `load'
    /usr/lib/ruby/1.9.3/rake/rake_module.rb:25:in `load_rakefile'
    /usr/lib/ruby/1.9.3/rake/application.rb:501:in `raw_load_rakefile'
    /usr/lib/ruby/1.9.3/rake/application.rb:82:in `block in load_rakefile'
    /usr/lib/ruby/1.9.3/rake/application.rb:133:in `standard_exception_handling'
    /usr/lib/ruby/1.9.3/rake/application.rb:81:in `load_rakefile'
    /usr/lib/ruby/1.9.3/rake/application.rb:65:in `block in run'
    /usr/lib/ruby/1.9.3/rake/application.rb:133:in `standard_exception_handling'
    /usr/lib/ruby/1.9.3/rake/application.rb:63:in `run'
    /usr/bin/rake1.9.3:32:in `<main>'
    
    markstaller@Elab18:~/WG_debs/SiriProxy/bin$ ./siriproxy 
    ./siriproxy:4:in `require': ./../lib/siriproxy/command_line.rb:74: syntax error, unexpected '>' (SyntaxError)
        repl = -> prompt { print prompt; cora.process(gets.chomp!) }
                 ^
    	from ./siriproxy:4
    Also in kurzform, wie macht aus der Sache im git etwas statisch ausführbares ohne sich vorher das ruby lokal 4x zu kompilieren ? (mich interessiert dabei weder was rake ist, noch wozu die Welt das oder gems braucht oder gar warum das bei Ruby alles viel besser ist )

    -> Am Ende des Tages muss es nämlich IMHO wenn als .deb installierbar sein, mit init-script, default-config und all sowas.. Um den hinteren Teil bemühe ich mich wenn es die Zeit zulässt aber jetzt 2 Tage in Ruby einlesen:

    Und dann muss man da noch ein paar Dinge ändern, damit nach 3J nicht die Zertifikate auslaufen und der Ärger losgeht und so (achso, solange hälts ja eh nicht, ich vergass )

    Makki

    Edit: ok der erste war dumm, 15min lesen muss man wohl doch
    Also "../env ruby" in "..env/ruby1.9.3" geändert und schon siehts besser aus aber jetzt kommt der nächste:
    Code:
    markstaller@Elab18:~/WG_debs/SiriProxy/bin$ ./siriproxy bundle
    /home/markstaller/WG_debs/SiriProxy/lib/siriproxy/command_line.rb:80:in ``': No such file or directory - bundle   (Errno::ENOENT)
    	from /home/markstaller/WG_debs/SiriProxy/SiriProxy/lib/siriproxy/command_line.rb:80:in `run_bundle'
    	from /home/markstaller/WG_debs/SiriProxy/SiriProxy/lib/siriproxy/command_line.rb:39:in `initialize'
    	from ./siriproxy:6:in `new'
    	from ./siriproxy:6:in `<main>'
    also will es was installieren vermute ich, das dürfen scriptsprachen spezifische Routinen aber nicht selbst - by design also: was braucht es?
    -> Ich les mal weiter solange es der Blutdruck zulässt

    Einen Kommentar schreiben:


  • vento66
    antwortet
    So Komando zurück! falsche example.rb geändert! Irgendwie gabs da noch ne 2.Version vom SiriProxy

    Licht schaltet jetzt mit Siri

    Einen Kommentar schreiben:


  • vento66
    antwortet
    Ja, ich versteh Dich! Aber die Meldungen auf der Konsole sehen bei mir genauso aus, nur das hinter Example irgend ne Zahl mit 9xxxx kommt. Kann das aber auch erst morgen wieder testen, weil ich gerade unterwegs bin.


    Sent from my iPhone using Tapatalk

    Einen Kommentar schreiben:


  • ThorstenGehrig
    antwortet
    ... nur um sicherzugehen... (du kennst das: stecker drinn? einschalter eingeschaltet?... usw).

    Wenn der Siri-proxy gestartet wird - zeigt er ja auf der Konsole wenn Daten zu Apple übertragen werden, was erkannt zurückkommt, und ob er was im Plugin findet.
    Siehst du diese Meldungen zur Kommunikation?

    Gruß
    Thorsten

    Nachtag: so sieht das bei mir aus:
    Code:
    [Info - iPhone] Received Object: StartSpeechRequest
    [Info - iPhone] Received Object: SpeechPacket
    [Info - iPhone] Received Object: SpeechPacket
    [Info - iPhone] Received Object: SpeechPacket
    [Info - Guzzoni] Received Object: RequestCompleted
    [Info - iPhone] Received Object: SpeechPacket
    [Info - iPhone] Received Object: SpeechPacket
    [Info - iPhone] Received Object: SpeechPacket
    [Info - iPhone] Received Object: SpeechPacket
    [Info - iPhone] Received Object: SpeechPacket
    [Info - iPhone] Received Object: SpeechPacket
    [Info - iPhone] Received Object: SpeechPacket
    [Info - iPhone] Received Object: SpeechPacket
    zlib(finalizer): the stream was freed prematurely.
    [Info - iPhone] Received Object: SpeechPacket
    [Info - iPhone] Received Object: SpeechPacket
    [Info - iPhone] Received Object: SpeechPacket
    [Info - iPhone] Received Object: FinishSpeech
    [Info - Guzzoni] Received Object: SpeechRecognized
    [Info - Plugin Manager] Processing 'Test Siri Proxy '
    [Info - Plugin Manager] Processing plugin #<SiriProxy::Plugin::Example:0x86d2b50>
    [Info - Plugin Manager] Matches (?i-mx:test siri proxy)
    [Info - Plugin Manager] Applicable states:
    [Info - Plugin Manager] Current state:
    [Info - Plugin Manager] Matches, executing block
    [Info - Plugin Manager] Say: Siri Proxy is up and running!
    [Info - Plugin Manager] Sending Request Completed

    Einen Kommentar schreiben:


  • vento66
    antwortet
    Das passt alles so
    Genau die Config habe ich angepasst. Den Server hab ich auch schon paar mal neugestartet... Jetzt hab ich im Moment keinen Plan mehr.

    Danke für deine Hilfe

    Einen Kommentar schreiben:


  • ThorstenGehrig
    antwortet
    okay - du verwendest nicht die VM - das macht das suchen etwas schwieriger...

    schau mal in deinem Siri-Proxy verzeichniss - da müsste eine config.yml drinn sein (wenn es nur eine config-example.yml ist -> kopieren)
    In dieser config.yml müsste sowas drinnstehen:

    - name: 'Example'
    path: './plugins/siriproxy-example'

    Das richtige script liegt dann ind
    ./plugin/siriproxy-example/lib/siriproxy-example.rb

    Nach dem ändern hast du den Proxy gestoppt und neu gestartet?

    Gruß
    Thorsten

    Einen Kommentar schreiben:


  • vento66
    antwortet
    Das ist eigentlich das original, mit den Zeilen hinten angefügt
    Code:
    require 'cora'
    require 'siri_objects'
    require 'pp'
    
    #######
    # This is a "hello world" style plugin. It simply intercepts the phrase "test siri proxy" and responds
    # with a message about the proxy being up and running (along with a couple other core features). This 
    # is good base code for other plugins.
    # 
    # Remember to add other plugins to the "config.yml" file if you create them!
    ######
    
    class SiriProxy::Plugin::Example < SiriProxy::Plugin
      def initialize(config)
        #if you have custom configuration options, process them here!
      end
    
      #get the user's location and display it in the logs
      #filters are still in their early stages. Their interface may be modified
      filter "SetRequestOrigin", direction: :from_iphone do |object|
        puts "[Info - User Location] lat: #{object["properties"]["latitude"]}, long: #{object["properties"]["longitude"]}"
        
        #Note about returns from filters:
        # - Return false to stop the object from being forwarded
        # - Return a Hash to substitute or update the object
        # - Return nil (or anything not a Hash or false) to have the object forwarded (along with any 
        #    modifications made to it)
      end 
    
      listen_for /test siri proxy/i do
        say "Siri Proxy funktioniert!"#say something to the user!
        
        request_completed #always complete your request! Otherwise the phone will "spin" at the user!
      end
      
      #Demonstrate that you can have Siri say one thing and write another"!
      listen_for /you don't say/i do
        say "Sometimes I don't write what I say", spoken: "Sometimes I don't say what I write"
      end 
    
      #demonstrate state change
      listen_for /siri proxy test state/i do
        set_state :some_state #set a state... this is useful when you want to change how you respond after certain conditions are met!
        say "I set the state, try saying 'confirm state change'"
        
        request_completed #always complete your request! Otherwise the phone will "spin" at the user!
      end
      
      listen_for /confirm state change/i, within_state: :some_state do #this only gets processed if you're within the :some_state state!
        say "State change works fine!"
        set_state nil #clear out the state!
        
        request_completed #always complete your request! Otherwise the phone will "spin" at the user!
      end
      
      #demonstrate asking a question
      listen_for /siri proxy test question/i do
        response = ask "Is this thing working?" #ask the user for something
        
        if(response =~ /yes/i) #process their response
          say "Great!" 
        else
          say "You could have just said 'yes'!"
        end
        
        request_completed #always complete your request! Otherwise the phone will "spin" at the user!
      end
      
      #demonstrate capturing data from the user (e.x. "Siri proxy number 15")
      listen_for /siri proxy number ([0-9,]*[0-9])/i do |number|
        say "Detected number: #{number}"
        
        request_completed #always complete your request! Otherwise the phone will "spin" at the user!
      end
      
      #demonstrate injection of more complex objects without shortcut methods.
      listen_for /test map/i do
        add_views = SiriAddViews.new
        add_views.make_root(last_ref_id)
        map_snippet = SiriMapItemSnippet.new
        map_snippet.items << SiriMapItem.new
        utterance = SiriAssistantUtteranceView.new("Testing map injection!")
        add_views.views << utterance
        add_views.views << map_snippet
        
        #you can also do "send_object object, target: :guzzoni" in order to send an object to guzzoni
        send_object add_views #send_object takes a hash or a SiriObject object
        
        request_completed #always complete your request! Otherwise the phone will "spin" at the user!
      end
    
      listen_for /(Licht|Lampe|Beleuchtung) (ein|an|start)/i do
        say "OK, Ich schalte die Beleuchtungsautomatik ein!" #say something to the user!
        wasGood = system( "groupswrite ip:10.0.0.8 0.0.1 1" )
        request_completed #always complete your request! Otherwise the phone will "spin" at the user!
      end
    
        listen_for /(Licht|Lampe|Beleuchtung) aus/i do
        say "Lichtautomatik ein!" #say something to the user!
        wasGood = system( "groupswrite ip:10.0.0.8 0/0/1 0" )
        request_completed #always complete your request! Otherwise the phone will "spin" at the user!
      end
    end
    Das komische ist, wenn ich "Siri Proxy is up and running" in "Siri Proxy funktioniert" ändere, meldet Siri sich immer noch mit "..ist up and running"

    Das Config File liegt unter
    Code:
    /root/SiriProxy/plugins/siriproxy-example/lib/siriproxy-example.rb
    ich starte als root und mit cd SiriProxy siriproxy server startet der Server.

    Ich hab schon gesucht ob das config File noch irgendwo existiert, aber nichts gefunden. Kurios

    Einen Kommentar schreiben:


  • ThorstenGehrig
    antwortet
    Hi
    schick mir mal das gesamte script - oder poste es komplett.
    Eigentlich passt das...

    Gruß
    Thorsten

    Einen Kommentar schreiben:


  • vento66
    antwortet
    Siri Proxy is up and running

    Also der Proxy läuft bei mir jetzt mal endlich auf einen Barebone. dnsmasq und Konsorten funktionieren scheinbar auch (Externe Anfragen nach dem Wetter gehen an Apple, die Frage nach Test Proxy Server landet richtig auf dem Proxy)

    jetzt hab ich die siriproxy-example.rb um folgendes erweitert:
    Code:
      listen_for /(Licht|Lampe|Beleuchtung) (ein|an)/i do
        say "OK, Ich schalte die Beleuchtungsautomatik aus!" #say something to the user!
        wasGood = system( "groupswrite ip:10.0.0.8 0.0.1 1" )
        request_completed #always complete your request! Otherwise the phone will "spin" at the user!
      end
    
        listen_for /(Licht|Lampe|Beleuchtung) aus/i do
        say "Lichtautomatik ein!" #say something to the user!
        wasGood = system( "groupswrite ip:10.0.0.8 0/0/1 0" )
        request_completed #always complete your request! Otherwise the phone will "spin" at the user!
    Nur kommt immer bei "Beleuchtung ein" oder jedem anderen Versuch:
    "Es tut mir leid, ich weis nicht was Du mit xyz meinst"

    Wo hab ich hier noch einen Fehler?

    Einen Kommentar schreiben:

Lädt...
X