Ace-T's Blog 내 검색 [네이버 커넥트 이웃 합니다~^-^/ 요청 大 환영~~]

농구~작성중..

Life of AceT/Good Helth 2017.11.16 18:44
[Good Comment!!, Good Discussion!!, Good Contens!!]
[ If you think that is useful, please click the finger on the bottom~^-^good~ ]
by ace-T

https://www.youtube.com/watch?v=vlhzwH_kQkw&t=4s


1. 포스트 자리 잡기

  See  Feel Move

-  빅맨들의 안좋은 버릇 : 기다린다. 기다리지 말자.


저작자 표시 비영리 변경 금지
신고

'Life of AceT > Good Helth' 카테고리의 다른 글

농구~작성중..  (0) 2017.11.16
2016 NIKE UNLIMITED KOREA  (0) 2016.08.05
교정치과 선정!  (0) 2016.08.01
닭가슴살 주문!!!  (2) 2016.04.19
탁구채 구매!!ㅋㅋ  (0) 2015.05.18
닭가슴살 + 탁구채  (0) 2015.04.16

설정

트랙백

댓글

:::: facebook을 이용하시는 분들은 로그인 후 아래에 코멘트를 남겨주세요 ::::

스팸전화 모음

Life of AceT/Good Info 2017.11.01 15:48
[Good Comment!!, Good Discussion!!, Good Contens!!]
[ If you think that is useful, please click the finger on the bottom~^-^good~ ]
by ace-T

전화 하지마~~~ㅋㅋ

02-6978-7534  ok 저축은행 대출  됐다고 하면 그냥 끈어버림ㅋㅋ 

02-6978-7555   딱봐도 저축은행 같아서 안받음-_-ㅋㅋ

02-3704-4923  city 은행 대출...

031-5183-9848 신용어쩌구 대출-_- 괜찮다고 하니 바로 끈어버림..담에 오면 걍 내가 먼저 끈을테다..ㅠㅠ

031-5183-9851  zzz 전화 못받음 하지만..딱 보니 대출전화군..-_-ㅋㅋ

02-6233-4819  sk어쩌구 치아보장보험 어쩌구..

010-9280-0964  알바천국 

저작자 표시 비영리 변경 금지
신고

설정

트랙백

댓글

:::: facebook을 이용하시는 분들은 로그인 후 아래에 코멘트를 남겨주세요 ::::

Review

Language/go lang 2017.10.24 19:33
[Good Comment!!, Good Discussion!!, Good Contens!!]
[ If you think that is useful, please click the finger on the bottom~^-^good~ ]
by ace-T



java 말고 golang

input / output은 동일하게 / export되지 않는 함수면 소문자로 SetValue (X) setValue(O)

acet.EntityInfo = setValue(acet.EntityInfo)

interface conversion

switch문을 사용할 수 있다. 해당 case의 타입이 들어오면 맞는 case 구문을 타게 된다.

ex) Body가 인터페이스 형태  

switch acet.Body.(type) {

case *xxx.xxxx:

case *aaa.xxxx:

default :

}







저작자 표시 비영리 변경 금지
신고

'Language > go lang' 카테고리의 다른 글

Review  (0) 2017.10.24
test code..반성!  (0) 2017.10.13
golang Context란?  (0) 2017.09.07
go lang - Map  (0) 2017.07.05
golang 정리  (0) 2017.05.18
GOROOT와 GOPATH  (0) 2017.04.27

acet 박태하가 추천하는 readtrend 추천글!

설정

트랙백

댓글

:::: facebook을 이용하시는 분들은 로그인 후 아래에 코멘트를 남겨주세요 ::::

test code..반성!

Language/go lang 2017.10.13 14:05
[Good Comment!!, Good Discussion!!, Good Contens!!]
[ If you think that is useful, please click the finger on the bottom~^-^good~ ]
by ace-T

java나 go lang이나 테스트 코드가 있다.

테스트 주도 개발이 좋다고 책에서 많이 보았다. 하지만 정작 그러한 책들을 보았음에도 불구하고..

간만에 코드를 짜게 되었는데..(그동안 서버 발주부터 셋팅, ACL 신청 등등 이러한 일들을 했다.)

테스트 코드를 짜야겠다는 생각을 하지 않은채 코드를 짰고, 테스트도 리퀘스트 부분만 잘들어가는지 대충 확인하고 다되었다고 PR을 날렸다.

리뷰의 결과는 창피했다.

왜 나는 꼼꼼하게 테스트 코드를 짜면서 테스트를 하지 않았을까?

당연..테스트 코드를 짜기가 부담스러웠나보다..또는 단순하게만 테스트 코드를 짜왔을지도 모른다.

막상 하려고보니..멍~하다. 

자..그럼 이제 무엇을 해야할까?

1) 앞으로 계속 두려워하며 쫄아서 피할것인가?

                   OR

2) 두려움을 극복하려고 노력할 것인가?


당연히 2번인가? 그렇다면 어떻게 노력할 것인가? 이게 가장 중요한 포인트 이다.

지금 이렇게 포스팅을 하는 이유도 노력의 시작의 일부임에는 틀림없다.

이제 시작되었으니 제대로 파악해서 제대로 사용해보자.

화이팅!



저작자 표시 비영리 변경 금지
신고

'Language > go lang' 카테고리의 다른 글

Review  (0) 2017.10.24
test code..반성!  (0) 2017.10.13
golang Context란?  (0) 2017.09.07
go lang - Map  (0) 2017.07.05
golang 정리  (0) 2017.05.18
GOROOT와 GOPATH  (0) 2017.04.27

설정

트랙백

댓글

:::: facebook을 이용하시는 분들은 로그인 후 아래에 코멘트를 남겨주세요 ::::

mac os에서 kafka-console-consumer 사용하기

OpenSource 2017.09.13 14:23
[Good Comment!!, Good Discussion!!, Good Contens!!]
[ If you think that is useful, please click the finger on the bottom~^-^good~ ]
by ace-T



kafka install

brew로 인스톨 해준다.
brew install kafka

명령어를 날리려는데 셋팅 된 위치를 모르겠다..ㅋㅋ

위치는 요기!!
/usr/local/Cellar/kafka/0.11.0.0/bin


명령은!

./kafka-console-consumer --zookeeper xxx.xxx.com:1111/acet-kafka --topic ace-taeha


끝~

저작자 표시 비영리 변경 금지
신고

'OpenSource' 카테고리의 다른 글

mac os에서 kafka-console-consumer 사용하기  (0) 2017.09.13
mesosphere  (0) 2017.04.28

acet 박태하가 추천하는 readtrend 추천글!

설정

트랙백

댓글

:::: facebook을 이용하시는 분들은 로그인 후 아래에 코멘트를 남겨주세요 ::::

golang Context란?

Language/go lang 2017.09.07 16:33
[Good Comment!!, Good Discussion!!, Good Contens!!]
[ If you think that is useful, please click the finger on the bottom~^-^good~ ]
by ace-T


https://golang.org/pkg/context/   or https://godoc.org/golang.org/x/net/context

Package context는 마감 시간, 취소 신호 및 기타 요청 범위 값을 API 경계와 프로세스간에 전달하는 컨텍스트 유형을 정의합니다.

서버에 들어오는 요청은 컨텍스트를 만들어야하며 서버로 나가는 호출은 컨텍스트를 받아 들여야합니다. 이들 사이의 함수 호출 체인은 컨텍스트를 전파해야하며 선택적으로 WithCancel, WithDeadline, WithTimeout 또는 WithValue를 사용하여 생성 된 파생 된 컨텍스트로 대체해야합니다. 컨텍스트가 취소되면 그 컨텍스트도 파생됩니다.


작성 중~

저작자 표시 비영리 변경 금지
신고

'Language > go lang' 카테고리의 다른 글

Review  (0) 2017.10.24
test code..반성!  (0) 2017.10.13
golang Context란?  (0) 2017.09.07
go lang - Map  (0) 2017.07.05
golang 정리  (0) 2017.05.18
GOROOT와 GOPATH  (0) 2017.04.27

acet 박태하가 추천하는 readtrend 추천글!

설정

트랙백

댓글

:::: facebook을 이용하시는 분들은 로그인 후 아래에 코멘트를 남겨주세요 ::::

kibana 잘 안띄워 진다면? 확인해보면 좋다!

OpenSource/ElasticSearch 2017.08.28 16:55
[Good Comment!!, Good Discussion!!, Good Contens!!]
[ If you think that is useful, please click the finger on the bottom~^-^good~ ]
by ace-T


로컬이 아닌 서버에 kibana를 다운 받고 run을 한 뒤!

웹브라우저로 접근을 하려는데..접근이 fail...

# Specifies the address to which the Kibana server will bind. IP addresses and host names are both valid values.

# The default is 'localhost', which usually means remote machines will not be able to connect.

# To allow connections from remote users, set this parameter to a non-loopback address.

server.host: "0.0.0.0" 

원인은 server.host가 주석처리가 되어있었는데 default가 localhost라서..접근이 안되었던 것!!!

docker image와는 다른 default~!!

엄청나게 쉽게 될 줄 알았는데 삽질 함..-_-;;

다른분들은 금방 해결 되길 바라며..포스팅~촤촤촤! ㅎㅎ


저작자 표시 비영리 변경 금지
신고

acet 박태하가 추천하는 readtrend 추천글!

설정

트랙백

댓글

:::: facebook을 이용하시는 분들은 로그인 후 아래에 코멘트를 남겨주세요 ::::

go lang - Map

Language/go lang 2017.07.05 17:09
[Good Comment!!, Good Discussion!!, Good Contens!!]
[ If you think that is useful, please click the finger on the bottom~^-^good~ ]
by ace-T

go는 변수명 다음에 자료형이 온다.
ex) var acet string 

java는 반대이다.
ex) String acet;

Map
go
var 맵명 map[키 자료형]값 자료형
ex) var acet map[string]int 
할당은 make 사용! 예제는 아래에 있음.

java는 
HashMap<String, int> acet = new HashMap<String, int>


코드를 보자!
아래의 사이트에서 바로 테스트 해보면 된다.
https://tour.golang.org/moretypes/19

package main

import "fmt"

func main() {

    // 자바에서는 new가 있다면 go에서는 make로 map을 할당한다.
    var acet map[string]string = make(map[string]string)
    acet = map[string]string{"a":"aaaa"}    
    fmt.Println(acet["a"])
    
     var mae = make(map[string]string)
     mae = map[string]string{"mae":"bbbb"}
     fmt.Println(mae["mae"])
    
     lov := make(map[string]string)
     lov = map[string]string{  // 뉴라인으로 하려면 마지막에 콤마(,)가 필요함.
         "haha":"cccc",
         "hoho":"dddd",
     }
     fmt.Println(lov["haha"])    
    
     // key가 없는지 알수 있는 방법은 리턴값 두번째를 이용. 없으면 false 리턴!
     solaSystem := make(map[string]string)
     solaSystem["earth"] ="my galaxy"
     // 자바는 put 사용. solaSystem.put("earth", "my galaxy");
     solaSystem["earth2"] ="goood~"
     fmt.Println(solaSystem["earth"])
     // 자바는 get 사용. solaSystem.get("earth");
    
     value, ok := solaSystem["mars"]
     fmt.Println(value, ok)
    
     // java와 달리 if구문에 괄호가 없다! 아래와 같이 요상하게 보일만한 문법을 자주 사용!
     // 리턴도 2개 이상..깜놀;
     // 자바에서는 키가 있는지 확인은 solaSystem.containsKey("earth2");를 사용.
     if value, ok := solaSystem["earth2"]; ok {
         fmt.Println(value)
    
     }
    
     // 맵 순회 -> for 키, 값 := range 맵{}
     for key, value := range solaSystem {
         fmt.Println(key, value)    
     }
    
     // value를 사용하고 싶지 않다면 언더바(_) 사용..허허~
     for key, _ := range solaSystem {
         fmt.Println(key, value)    
     }
    
     //맵에서 데이터 삭제!
     // 자바에서는 solaSystem.remove("earth"); 를 사용.
     delete(solaSystem, "earth")
     _, isOk := solaSystem["earth"]
     fmt.Println(isOk)
    
    
}

결과




저작자 표시 비영리 변경 금지
신고

'Language > go lang' 카테고리의 다른 글

test code..반성!  (0) 2017.10.13
golang Context란?  (0) 2017.09.07
go lang - Map  (0) 2017.07.05
golang 정리  (0) 2017.05.18
GOROOT와 GOPATH  (0) 2017.04.27
go land에서 formatting 설정하기  (0) 2017.04.26

acet 박태하가 추천하는 readtrend 추천글!

설정

트랙백

댓글

:::: facebook을 이용하시는 분들은 로그인 후 아래에 코멘트를 남겨주세요 ::::

linux os 확인

OS/Linux&Unix 2017.07.03 17:16
[Good Comment!!, Good Discussion!!, Good Contens!!]
[ If you think that is useful, please click the finger on the bottom~^-^good~ ]
by ace-T


$ grep . /etc/*-release
/etc/centos-release:CentOS Linux release 7.2.1511 (Core)
/etc/os-release:NAME="CentOS Linux"
/etc/os-release:VERSION="7 (Core)"
/etc/os-release:ID="centos"
/etc/os-release:ID_LIKE="rhel fedora"
/etc/os-release:VERSION_ID="7"
/etc/os-release:PRETTY_NAME="CentOS Linux 7 (Core)"
/etc/os-release:ANSI_COLOR="0;31"
/etc/os-release:CPE_NAME="cpe:/o:centos:centos:7"
/etc/os-release:HOME_URL="https://www.centos.org/"
/etc/os-release:BUG_REPORT_URL="https://bugs.centos.org/"
/etc/os-release:CENTOS_MANTISBT_PROJECT="CentOS-7"
/etc/os-release:CENTOS_MANTISBT_PROJECT_VERSION="7"
/etc/os-release:REDHAT_SUPPORT_PRODUCT="centos"
/etc/os-release:REDHAT_SUPPORT_PRODUCT_VERSION="7"
/etc/redhat-release:CentOS Linux release 7.2.1511 (Core)
/etc/system-release:CentOS Linux release 7.2.1511 (Core)


$ cat /etc/*-release | uniq
CentOS Linux release 7.2.1511 (Core)
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"

CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"

CentOS Linux release 7.2.1511 (Core)

참조 사이트 : https://zetawiki.com/wiki/%EB%A6%AC%EB%88%85%EC%8A%A4_%EC%A2%85%EB%A5%98_%ED%99%95%EC%9D%B8,_%EB%A6%AC%EB%88%85%EC%8A%A4_%EB%B2%84%EC%A0%84_%ED%99%95%EC%9D%B8

감사하므니다! ㅎㅎ 


저작자 표시 비영리 변경 금지
신고

'OS > Linux&Unix' 카테고리의 다른 글

linux os 확인  (0) 2017.07.03
pokemon skin  (0) 2017.06.22
yum에 대해 알아보자.  (0) 2017.05.09
curl http/2  (0) 2017.03.21
리눅스 - scp file copy  (0) 2017.01.22
top 명령&옵션  (0) 2016.12.21

acet 박태하가 추천하는 readtrend 추천글!

설정

트랙백

댓글

:::: facebook을 이용하시는 분들은 로그인 후 아래에 코멘트를 남겨주세요 ::::

Docker ?

CM/docker 2017.06.27 15:23
[Good Comment!!, Good Discussion!!, Good Contens!!]
[ If you think that is useful, please click the finger on the bottom~^-^good~ ]
by ace-T





 Docker?
  • 2013년 3월 Docker, Inc에서 출시한 오픈소스 컨테이너 프로젝트
  • 복잡한 리눅스 어플리케이션을 컨테이너로 묶어서 실행할 수 있음.
  • 리눅스 커널에서 제공하는 컨테이너 기술을 이용.
  • 컨테이너(이미지)를 전 세계 사람들과 공유
  • Github와 비슷한 방식의 Docker Hub 제공.
  • 이미지 생성과 배포에 특화.
    • 이미지 버전관리 제공, 중앙저장소에서 이미지를 올리고 받을 수 있음. (push/pull)

컨테이너?
  • 가상화보다 훨씬 가벼운 기술.
    • 가상머신 : 컴퓨터 안에서 컴퓨터를 만들어내기 위한 시도(1960년 대에 가상화 개념이 처음 등장)
      • 컴퓨터 통째로 만들어내다보니 각종 성능 손실이 발생. -> 리눅스 컨테이너 등장.
  • 컨테이너 안에 가상공간을 만들지만 실행 파일을 호스트에서 직접 실행.(리눅스 커널의 groups, namespaces가 제공하는 기술)



도커는 리눅스 컨테이너를 사용!
  • 초기에는 LXC(Linux Container)를 기반으로 구현.
  • 버전 0.9 부터는 LXC를 대신하는 libcontainer를 개발하여 사용.
  • 실행 옵션으로 선택 가능.

이미지와 컨테이너의 구분
  • 이미지 : 서비스 운영에 필요한 서버 프로그램
    • 소스코드, 컴파일된 실행 파일을 묶음 형태.
    • 저장소에 올리고 받는것은 이미지!(push/pull)
    • 이미지로 여러 개의 컨테이너를 만들수 있음.
  • 컨테이너 : 이미지를 실행한 상태!


도커 사용
docker + <명령>
예) docker run, docker push
* 항상 root 권한으로 실행.

  • docker hub에서 이미지 검색해보기
    • docker search <image name>
      • sudo docker search ubuntu
  • docker hub에서 이미지를 받아보자.
    • docker pull <image name>:<tag>
      • sudo docker pull ubuntu:latest
  • 모든 이미지를 출력해보기
    • docker images
      • sudo docker images
  • 이미지를 컨테이너로 생성한 뒤 Bash shell 실행해보기.
    • docker run <옵션> <이미지 이름> <실행할 파일>
      • sudo docker run -i -t —name hello ubuntu /bin/bash
      • -i : interactive / -t : passed-tty
        • 실행된 Bash 쉘에 입력 및 출력 가능.
      • —name : 컨테이너 이름을 지정. 미지정시 자동으로 이름을 생성하여 지정.
  • 모든 컨테이너 목록 출력
    • docker ps
      • sudo docker ps -a
  • 컨테이너 시작
    • docker start(restart) <컨테이너 이름>
      • sudo docker start hello
  • 방금 시작한 컨테이너에 접속해보기
    • docker attach <컨테이너 이름>
      • sudo docker attach hello
  • /bin/bash를 통하지 않고 외부에서 컨테이너 안의 명령 실행해보기
    • docker exec <컨테이너이름> <명령> <매개변수>
      • sudo docker exec hello echo “hello world”
  • 컨테이너 중지
    • docker stop <컨테이너 이름>
      • sudo docker stop hello
  • 컨테이너 삭제
    • docker rm hello
      • sudo docker rm hello
  • 이미지 삭제
    • docker rmi <이미지 이름>:<태그>
      • sudo docker rmi ubuntu:latest



저작자 표시 비영리 변경 금지
신고

'CM > docker' 카테고리의 다른 글

Docker ?  (0) 2017.06.27
about docker  (0) 2017.04.27

acet 박태하가 추천하는 readtrend 추천글!

설정

트랙백

댓글

:::: facebook을 이용하시는 분들은 로그인 후 아래에 코멘트를 남겨주세요 ::::

메시지큐에 대해 알아보자.

Architecture/AA 2017.06.27 14:30
[Good Comment!!, Good Discussion!!, Good Contens!!]
[ If you think that is useful, please click the finger on the bottom~^-^good~ ]
by ace-T
모델 종류 
  • 발행/구독(publish - and - subscribe) 모델
          1: 다 - 모든 클라이언트에게 모든 메시지의 사본을 전달.
           publisher -> topic -> subscriber
                                         -> subscriber
                                         -> subscriber


  • 지점간 연결(point -  to - point) 모델 
          1:1 - 하나의 메시지는 하나의 클라이언트에만 전송(큐는 공유 가능)
          sender -> queue -> receiver 

위의 모델 중에 publish - and - subscribe(pub - sub) 모델에 대해서 알아보자!

pub/sub 구조
보통의 message queue들은 publisher - message broker(topic) - subscriber 구조를 사용한다.
publisher(message data)를 하면 가운데 있는 message broker가 메시지를 선택하고 처리하는 즉, 내부적으로 구독하고 있는
subscriber들을 찾아서 메시지를 보낸다. 

opensource message queue중에 nats라는 녀석이 있다. (http://nats.io/)
lib는 https://github.com/nats-io/go-nats 참고!


pub/sub 구현(w/go lang)
그러면 pub/sub 모델을 구현한다고 생각해보자.
우선은 메시지큐 server가 필요하겠다. 그리고 그 서버를 붙는 client도 필요하다.
보통 jms, nats, amazon sqs 등등이 서버가 되겠다. client는 제공되어지는 publish()등의 함수가 있는 lib 정도.

ex)  메시지 큐 동작 과정
  1. 클라이언트가 NATS 서버와의 TCP / IP 소켓 연결을 설정.
    1. nc, _ := nats.Connect(nats.DefaultURL)
  2. 발행
    1. nc.Publish("foo", []byte("Hello World"))
  3. 구독 (subject가 구독대상 : foo)
          // Simple Async Subscriber
    nc.Subscribe("foo", func(m *nats.Msg) {
                      fmt.Printf("Received a message: %s\n", string(m.Data))
     })

    // Simple Sync Subscriber
    sub, err := nc.SubscribeSync("foo")
    m, err := sub.NextMsg(timeout)
  1. 구독 해제(Sync Subscriber 일 경우에만)
    // Unsubscribe
          sub.Unsubscribe()    
     5. defer nc.Close()    

func TestNatsWorking(t *testing.T) {
   nc, _ := nats.Connect(nats.DefaultURL)
   defer nc.Close()
   // Simple Publisher
   nc.Publish("foo", []byte("Hello World"))

   // Simple Async Subscriber
   nc.Subscribe("foo", func(m *nats.Msg) {
      fmt.Printf("Received a message: %s\n", string(m.Data))
   })

}



           


저작자 표시 비영리 변경 금지
신고

acet 박태하가 추천하는 readtrend 추천글!

설정

트랙백

댓글

:::: facebook을 이용하시는 분들은 로그인 후 아래에 코멘트를 남겨주세요 ::::

pokemon skin

OS/Linux&Unix 2017.06.22 16:48
[Good Comment!!, Good Discussion!!, Good Contens!!]
[ If you think that is useful, please click the finger on the bottom~^-^good~ ]
by ace-T
심심했던 검정 화면이! 아래와 같이 변화합니다 ㅋㅋㅋ 굿뜨!

https://github.com/LazoCoder/Pokemon-Terminal


저작자 표시 비영리 변경 금지
신고

'OS > Linux&Unix' 카테고리의 다른 글

linux os 확인  (0) 2017.07.03
pokemon skin  (0) 2017.06.22
yum에 대해 알아보자.  (0) 2017.05.09
curl http/2  (0) 2017.03.21
리눅스 - scp file copy  (0) 2017.01.22
top 명령&옵션  (0) 2016.12.21

acet 박태하가 추천하는 readtrend 추천글!

설정

트랙백

댓글

:::: facebook을 이용하시는 분들은 로그인 후 아래에 코멘트를 남겨주세요 ::::

About Json

Study/RND group 2017.06.09 22:55
[Good Comment!!, Good Discussion!!, Good Contens!!]
[ If you think that is useful, please click the finger on the bottom~^-^good~ ]
by ace-T
개 요
about Json
관련 개념
marshalling/unmarshalling 
encoding/decoding
예제
기본적인 코드 구현
확장
관련 된 확장 개념 등

개요
JSON (JavaScript Object Notation)은 경량의 DATA-교환 형식이다. 
이 형식은 사람이 읽고 쓰기에 용이하며, 기계가 분석하고 생성함에도 용이하다.
 JavaScript Programming LanguageStandard ECMA-262 3rd Edition - December 1999의 일부에 토대를 두고 있다. 

왜 Json을 사용하는가?
  1. 경량의 데이터 포맷(XML보다)
  2. 간단한 포맷(가독성이 좋음)
  3. 기존 XML보다 다양한 데이터 타입 제공(string, number, boolean), xml은 only string

Json이 가지는 형식


object는 name/value 쌍들의 비순서화된 SET이다. 
object는 { (좌 중괄호)로 시작하고 } (우 중괄호)로 끝내어 표현한다. 
각 name 뒤에 : (colon)을 붙이고 , (comma)로 name/value 쌍들 간을 구분한다.


예제) 
{
    "acet": "박태하",
    "ace-t": "terry"
}



array은 값들의 순서화된 collection 이다. array는 [ (left bracket)로 시작해서 ] (right bracket)로 끝내어 표현한다. 
, (comma)로 array의 값들을 구분한다.

예제 1)
{
    "acet": [
        {
            "name": "박태하",
            "age": 100,
            "job": "developer"
        }, {
            "name": "테리팍",
            "age": 60,
            "job": "architector"
        }
    ]
}

예제 2)
{
    "acet": [
     {
        "name": "박태하",
        "age": 100,
        "job": "developer"
    }, {
        "name": "테리팍",
        "age": 60,
        "job": "architector"
    }
   ],
    "terry": [
     {
        "name": "으라차차",
        "age": 29,
        "job": "백수"

    }
   ]
}

참고 : http://www.json.org/json-ko.html

관련 개념
  • encoding/decoding
    • encoding은 말 그래도 코드를 만드는 것.
      • 소스코딩 : 코드를 압축하는 과정
      • 채널코딩 : 데이터를 압축하는 것이 아니라 반대로 더 늘리는 알고리즘.
    • decoding은 만들어진 코드를 푸는 것.
  • 왜 encoding/decoding을 사용하는가? 효율적, 안전성, 신뢰성 때문에

  • Json marshalling/unmarshalling 
    • marshalling : Object ->  Json
    • unmarshalling : Json -> Object


예제
  • go lang

  • java 




저작자 표시 비영리 변경 금지
신고

'Study > RND group' 카테고리의 다른 글

About Json  (0) 2017.06.09
RND 스터디  (0) 2017.05.01

acet 박태하가 추천하는 readtrend 추천글!

설정

트랙백

댓글

:::: facebook을 이용하시는 분들은 로그인 후 아래에 코멘트를 남겨주세요 ::::

JsonLint - Json validator 소개

project 관련/개발 노트 2017.06.02 11:08
[Good Comment!!, Good Discussion!!, Good Contens!!]
[ If you think that is useful, please click the finger on the bottom~^-^good~ ]
by ace-T


https://jsonlint.com/

이런게 있었다니..ㅋㅋㅋㅋ 괜히 눈으로 맞춰보느라 고생했네..ㅎㅎ 

요런 노가다를 줄이자~


저작자 표시 비영리 변경 금지
신고

'project 관련 > 개발 노트' 카테고리의 다른 글

JsonLint - Json validator 소개  (0) 2017.06.02
OAuth에 대해 알아보자!  (0) 2017.02.23
2014.11.20 - 개발노트  (0) 2014.11.20
mom 프로젝트 시작! ㅋㅋ  (0) 2014.11.17
RND Site 구축  (0) 2014.05.09
bootstrap을 가지고 잠시 만들어보았다..  (0) 2014.05.05

설정

트랙백

댓글

:::: facebook을 이용하시는 분들은 로그인 후 아래에 코멘트를 남겨주세요 ::::

PlaybackController Interface

Architecture/A.I 2017.05.26 15:06
[Good Comment!!, Good Discussion!!, Good Contens!!]
[ If you think that is useful, please click the finger on the bottom~^-^good~ ]
by ace-T

그림은 무관합니다. 최강두산 화이팅! ㅋㅋ





Overview

PlaybackController 인터페이스는 음성 요청이 아닌 클라이언트 측 버튼 누르기 또는 GUI 어바이어를 통해 
재생 대기열을 탐색하기위한 일련의 이벤트를 제공합니다.

PlayCommandIssued Event 

PlayCommandIssued 이벤트는 사용자가 클라이언트상의 버튼 누름 또는 GUI affordance를 사용하여 미디어 항목의 재생을 시작 / 재개 할 때 전송되어야합니다.

Sample Message

{
    "context": [
        {{Alerts.AlertsState}},
        {{AudioPlayer.PlaybackState}},
        {{Speaker.VolumeState}},
        {{SpeechSynthesizer.SpeechState}}
        {{SpeechRecognizer.RecognizerState}}
    ],
    "event": {
        "header": {
            "namespace": "PlaybackController",
            "name": "PlayCommandIssued",
            "messageId": "{{STRING}}"
        },
        "payload": {
        }
    }
}


Context
PlayCommandIssued 이벤트는 클라이언트가 모든 클라이언트 구성 요소 상태의 상태를 보내도록 요구합니다. 
추가 정보는 컨텍스트를 참조하십시오.

Header Parameters

Parameter
Description
Type
messageId
A unique ID used to represent a specific message.
string

Payload Parameters
빈 payload를 보내야합니다.


PauseCommandIssued Event 

PauseCommandIssued 이벤트는 사용자가 클라이언트상의 단추 누르기 또는 GUI affordance를 사용하여 미디어 항목의 재생을 일시 중지 할 때 전송되어야합니다.

Sample Message

{
    "context": [
        {{Alerts.AlertsState}},
        {{AudioPlayer.PlaybackState}},
        {{Speaker.VolumeState}},
        {{SpeechSynthesizer.SpeechState}}
        {{SpeechRecognizer.RecognizerState}}
    ],
    "event": {
        "header": {
            "namespace": "PlaybackController",
            "name": "PauseCommandIssued",
            "messageId": "{{STRING}}"
        },
        "payload": {
        }
    }
}

Context
PauseCommandIssued 이벤트는 클라이언트가 모든 클라이언트 구성 요소 상태의 상태를 보내도록 요구합니다. 
추가 정보는 컨텍스트를 참조하십시오.


Header Parameters

Parameter
Description
Type
messageId
A unique ID used to represent a specific message.
string

Payload Parameters
빈 payload를 보내야합니다.


NextCommandIssued Event 

NextCommandIssued 이벤트는 사용자가 클라이언트상의 단추 누르기 또는 GUI affordance를 사용하여 재생 대기열의 다음 미디어 항목으로 건너 뛸 때 전송되어야합니다.

Sample Message

{
    "context": [
        {{Alerts.AlertsState}},
        {{AudioPlayer.PlaybackState}},
        {{Speaker.VolumeState}},
        {{SpeechSynthesizer.SpeechState}}
        {{SpeechRecognizer.RecognizerState}}
    ],
    "event": {
        "header": {
            "namespace": "PlaybackController",
            "name": "NextCommandIssued",
            "messageId": "{{STRING}}"
        },
        "payload": {
        }
    }
}

Context
NextCommandIssued 이벤트는 클라이언트가 모든 클라이언트 구성 요소 상태의 상태를 보내도록 요구합니다. 
추가 정보는 컨텍스트를 참조하십시오.

Header Parameters

Parameter
Description
Type
messageId
A unique ID used to represent a specific message.
string

Payload Parameters
빈 payload를 보내야합니다.


PreviousCommandIssued Event 

클라이언트가 버튼 누름 또는 GUI affordance를 사용하여 재생 대기열에서 이전 미디어 항목으로 건너 뛸 때 PreviousCommandIssued 이벤트를 보내야합니다.

Sample Message

{
    "context": [
        {{Alerts.AlertsState}},
        {{AudioPlayer.PlaybackState}},
        {{Speaker.VolumeState}},
        {{SpeechSynthesizer.SpeechState}}
        {{SpeechRecognizer.RecognizerState}}
    ],
    "event": {
        "header": {
            "namespace": "PlaybackController",
            "name": "PreviousCommandIssued",
            "messageId": "{{STRING}}"
        },
        "payload": {
        }
    }
}

Context

PreviousCommandIssued 이벤트는 클라이언트가 모든 클라이언트 구성 요소 상태의 상태를 보내도록 요구합니다. 
추가 정보는 컨텍스트를 참조하십시오.

Header Parameters

Parameter
Description
Type
messageId
A unique ID used to represent a specific message.
string

Payload Parameters
빈 payload를 보내야합니다.



저작자 표시 비영리 변경 금지
신고

'Architecture > A.I' 카테고리의 다른 글

PlaybackController Interface  (0) 2017.05.26
Understanding Alerts  (0) 2017.05.26
Alerts Interface  (0) 2017.05.25
AudioPlayer Interface  (0) 2017.05.24

acet 박태하가 추천하는 readtrend 추천글!

설정

트랙백

댓글

:::: facebook을 이용하시는 분들은 로그인 후 아래에 코멘트를 남겨주세요 ::::

Understanding Alerts

Architecture/A.I 2017.05.26 15:03
[Good Comment!!, Good Discussion!!, Good Contens!!]
[ If you think that is useful, please click the finger on the bottom~^-^good~ ]
by ace-T

Overview

alerts에 관해서, 사용자는 일반적으로 타이머 설정, alert 설정 또는 타이머 또는 alert 삭제 / 취소의 세 가지 방법 중 하나로 Alexa 사용 가능 제품과 상호 작용합니다. 사용자가 타이머 또는 알람을 설정하려면 제품에 활성 인터넷 연결이 있어야합니다
이 작업은 제품에 조치 (예 : SetAlert 및 DeleteAlert)를 지시하고 Alexa Voice Service (AVS)에 조치가 취해 졌음을 알리는 이벤트
 (예 : SetAlertSucceeded 및 DeleteAlertSucceeded)를 전송하는 데 필요합니다.

인터넷 연결이 끊어지면 제품에 이전에 설정된 타이머 또는 alert을 처리 할 수 있어야합니다. 
예를 들어, 사용자가 오전 7시 30 분에 알람을 설정하면 잠자기 전에 제품이 밤 사이에 인터넷 연결이 끊어지면 제품에 오전 7시 30 분에 알림을 재생할 수있는 기능이 있어야합니다. 인터넷 연결이 끊어진 후 타이머 및 알람을 실행하면 긍정적인 사용자 환경이 보장됩니다.

제품의 시계를 관리하는 것은 타이머와 alert이 설계된대로 작동하도록하는 데 중요합니다. 
AVS에서 보낸 모든 directive는 UTC 시간에 반환됩니다. 사용자가 제품에 "3 분 동안 타이머 설정"을 지시하면 AVS는 해당 사용자의 시간대를 고려하여 요청에 해당하는 올바른 UTC 시간을 결정합니다. 제품의 시간이 현지에서 조정 된 경우 타이머 및 알람이 제대로 작동하지 않을 수 있습니다. 이러한 이유로 아마존은 시계 동기화에 NTP (Network Time Protocol)를 사용하도록 제안합니다.

정전 또는 재부팅이 필요한 경우 제품에 alert을 유지하고 복원 할 수 있어야합니다. 
향후 alert가 예정된 경우 제품에서 alert을 로컬로 설정해야합니다.
 귀하의 제품은 alert가 다시 설정되었음을 Alexa에 알리는 이벤트를 전송할 필요가 없습니다
alert가 해제 될 때 제품 전원이 꺼지거나 재부팅되는 경우 다음 규칙을 따라야합니다.
  • 지난 30 분 내에 alert가 예정된 경우 제품에서 alert를 트리거하고 모든 해당 이벤트를 보내야합니다.
  • alert가 예정된 수행에서 30 분 이상 경과하면 이를 폐기해야하며 제품은 각 폐기 alert에 대해 AVS에 AlertStopped 이벤트를 보내야합니다.

Alexa 기반 제품은 다음과 같이 요약 할 수 있습니다.
  • 인터넷 연결이 끊어지면 이전에 설정된 alert를 처리 할 수 있어야합니다.
  • 네트워크 시간 프로토콜을 사용하여 제품의 시계를 관리하십시오.
  • 제품의 전원이 꺼 지거나 재부팅되는 경우 이전에 설정된 alert를 처리 할 수 있어야합니다.

다음 예제는 타이머 및 알람이 AVS와 함께 작동하는 방법을 이해하는 데 사용해야합니다. 
이러한 시나리오는 다음을 가정합니다.
  • 귀하의 제품은 사용자의 말을 처리하고 AVS로부터받은 지침에 따라 행동하도록 고안되었습니다.
  • 귀하의 제품은 클라우드 기반 지시문을 수신하는 다운 채널을 구축했습니다. 
          자세한 내용은 AVS를 사용하여 HTTP / 2 연결 관리를 참조하십시오.
  • 이벤트가 발생하면 제품에서 AVS를 업데이트합니다.
  • 모든 이벤트는 개별 이벤트 스트림으로 전송됩니다.

Scenario 1: Set a Timer with Voice

사용자가 5 분 동안 타이머를 설정하려고합니다. 
사용자가 "5 분 동안 타이머 설정"이라고 말하면 제품은 사용자의 음성을 캡처하고 AVS에 인식 이벤트를 전송해야합니다. 
그런 다음 AVS는 제품에 수행 할 작업을 지시하는 일련의 directive로 응답하고 제품은 조치를 취해야합니다. 
익숙한 것 같습니다. 타이머나 alert을 설정하는 것은 제품과 AVS 간의 표준 상호 작용 모델을 따르기 때문입니다. 
질문을하거나 요청을하고 응답을 받고 그에 따라 행동하고 AVS에 문제가 발생했음을 업데이트하십시오.

이것은 타이머를 설정할 때의 메시지 흐름입니다.
  • 사용자가 타이머 설정을 요청하면 AVS는 Speak Directive를 보내 제품에 연결된 오디오를 재생하도록 지시합니다. 
     이 시나리오에서는 "5 분, 지금 시작하십시오."알렉사 speech의 재생이 시작되면 제품에서 AVS로 SpeechStarted 이벤트를 보내야합니다.
  • Alexa speech의 재생이 완료되면 SpeechFinished 이벤트를 AVS에 보내야합니다.
  • 또한 AVS는 다운 채널 스트림에서 제품에 SetAlert 지정 문을 전송합니다. 제품 타이머는 5 분 동안 설정되어야하며 SetAlertSucceeded 이벤트는 AVS로 전송되어야합니다. 제품에는 타이머 설정 및 타이머 만료에 필요한 논리가 있어야합니다.
  • 5 분이 경과 한 후 제품은 타이머가 만료되었음을 사용자에게 알리고 AlertStarted 이벤트를 AVS로 보내야합니다.


사용자는 음성 또는 Amazon Alexa 앱을 사용하여 타이머를 중지 할 수 있어야하며 가능한 경우 물리적 컨트롤 (버튼 또는 GUI)을 통해 타이머를 중지 할 수 있어야합니다.
  • 요청이 음성 또는 Amazon Alexa 앱을 통해 이루어지면 AVS는 제품에 DeleteAlert Directive를 보냅니다. 이 때 제품은 AlertStopped 이벤트와 DeleteAlertSucceeded 이벤트를 AVS에 보내야 합니다.
  • button affordance 결과로 타이머가 중지되면 제품은 AlertStopped 이벤트를 AVS로 전송해야합니다.

올바르게 구현 된 경우 타이머가 제품에 설정되면 인터넷 연결없이 작동해야합니다. 
그러나 이벤트가 발생했음을 AVS에 알리는 연결이 필요합니다. 
따라서 인터넷 연결이 다시 설정되면 제품 상태에서 AVS를 업데이트하는 데 필요한 논리가 제품에 있어야합니다.

아래의 시퀀스 다이어그램은 타이머가 설정된 경우 제품과 AVS 간의 예상되는 상호 작용을 보여줍니다.







Scenario 2: Cancel an Alarm Using the Amazon Alexa App

이 시나리오에서는 alert가 성공적으로 설정되었고 사용자가 해당 alert를 취소하려고한다고 가정해야합니다.
사용자는 Amazon Alexa 앱을 열어 모든 제품 별 알람 (활성 및 비활성)에 액세스 할 수 있습니다. 
사용자는 알람으로 이동하고 오전 7시 30 분에 설정된 알람을 취소합니다.

DeleteAlert directive는 다운채널 스트림으로 제품으로 전송됩니다. 지금까지 모든 사용자 조치가 Amazon Alexa 앱에서 발생했습니다.
DeleteAlert directvie를 받으면 제품에서 directive에 따라 행동하고 오전 7시 30 분에 설정된 경보를 취소 할 수 있어야합니다. 
여기에는 알람이 삭제 된 후 AVS에 DeleteAlertSucceeded 이벤트를 보내는 작업이 포함됩니다.

이 시퀀스 다이어그램은 Amazon Alexa 앱을 사용하여 알람을 취소 한 경우 제품과 AVS 간의 예상되는 상호 작용을 보여줍니다.




Scenario 3: Set a Recurring(순환하는) Alarm

제품에 반복적인 알람을 설정하는 과정은 타이머 설정과 유사합니다. 
directive와 event의 흐름은 거의 동일합니다 (시나리오 1 참조). 
유일한 차이점은 반복 알람이 취소 될 때까지 AVS가 매일 새 SetAlert directive를 제품에 보냅니다.
이 시퀀스 다이어그램은 반복 알람이 설정 될 때 제품과 AVS 간의 예상되는 상호 작용을 보여줍니다.





Scenario 4: Snooze a Sounding Alarm

이 시나리오에서는 alert가 성공적으로 설정되었고 현재 소리가 나는 것으로 가정해야합니다.
중요 : 다시 알림은 음성으로 만 시작할 수 있습니다.

알람이 울리고 사용자가 "Alexa, snooze"라고 말하면 몇 가지 일이 발생합니다. 
사용자 음성이 AVS로 스트리밍되고 업데이트 된 예약 시간이있는 새 SetAlert directive가 제품으로 전송됩니다. 
귀하의 제품은 울리는 alert의 토큰과 새로운 SetAlert directive가 일치하는지 확인해야합니다. 
토큰이 일치하면 제품에서 경고음을 취소하고 SetAlert directive의  payload에 포함 된 scheduledTime에 대한 새 알람을 설정해야합니다.
이 시퀀스 다이어그램은 알람이 일시 중지 된 경우 제품과 AVS 간의 예상되는 상호 작용을 보여줍니다.




Lifecycle Events

이 표는 제품이 AVS에 보내야하는 네 가지 사용자 조치 및 라이프 사이클 이벤트를 제공합니다.

참고 : DeleteAlertSucceeded 또는 DeleteAlertFailed는 DeleteAlert directive에 대한 응답으로만 전송됩니다. 
로컬로 수행 된 작업에 대해 이러한 이벤트를 보내지 마십시오.


User Action
Server Behavior
Alert is Active (Making Noise)
Send AlertStarted
Send AlertStopped
Send DeleteAlertSucceeded / DeleteAlertFailed
User says: “Stop Alert.”
DeleteAlert를downchannel stream에서 전송.
Y
Y
Y
Y
사용자는 실제 컨트롤 (버튼 또는 GUI)을 사용하여 활성 alert를 로컬에서 중지합니다.
None
Y
Y
Y
N
사용자가 음성 요청 또는 Amazon Alexa 앱을 통해 비활성 알림을 취소합니다.
DeleteAlertdiretive 를 downchannel stream에서 전송.
N
N
N
Y
재생하지 않고 알람이 만료되었습니다 
(예 : 예정된 이행 시간에 기기의 전원이 켜지지 않음)
None
N
N
Y
N


참고 : https://developer.amazon.com/public/solutions/alexa/alexa-voice-service/reference/timers-and-alarms-conceptual-overview#overview







저작자 표시 비영리 변경 금지
신고

'Architecture > A.I' 카테고리의 다른 글

PlaybackController Interface  (0) 2017.05.26
Understanding Alerts  (0) 2017.05.26
Alerts Interface  (0) 2017.05.25
AudioPlayer Interface  (0) 2017.05.24

acet 박태하가 추천하는 readtrend 추천글!

설정

트랙백

댓글

:::: facebook을 이용하시는 분들은 로그인 후 아래에 코멘트를 남겨주세요 ::::

Alerts Interface

Architecture/A.I 2017.05.25 17:49
[Good Comment!!, Good Discussion!!, Good Contens!!]
[ If you think that is useful, please click the finger on the bottom~^-^good~ ]
by ace-T


Overview

Alert 인터페이스는 타이머와 알람을 설정, 관리 및 취소하는 데 사용되는 directive와  event를 제공합니다. 
AVS는 타이머와 알람을 설정하고 관리하기 위해 고객에게 지시를 보내지만 궁극적으로 인터넷 연결이 끊어 지거나 제품 내 시계가 NTP와 동기화되지 않으면 타이머와 알람을 관리하는 데 필요한 논리를 구현해야합니다. 
자세한 구현 세부 정보는 Understanding Alerts (Alerts 이해) 및 Interaction Model (상호 작용 모델)을 참조하십시오.

이 문서는 다음 주제를 다룹니다.
  • Alerts State Diagram
  • Alerts Directives and Events

State Diagram

다음 다이어그램은 Alerts 구성 요소에 의해 구동되는 상태 변경을 보여줍니다. 
Boxes는 Alerts 상태를 나타내고 connectors는 전환을 나타냅니다.

Alerts은 다음 상태를 지원합니다.
IDLE : 이전에 설정된 Alerts이 울리기 전에 Alerts 구성 요소가 IDLE 상태 여야합니다. 
alerts가 중지 / 완료되면 Alerts도 IDLE 상태로 되돌아 가야합니다. 
이것은 사용자 음성, 실제 버튼 누름 또는 GUI affordance의 결과로 발생할 수 있습니다.

FOREGROUND ALERT : 클라이언트 측 alert이 이미 설정되었다고 가정하면 alerts가 시작되고 AlertStarted 이벤트가 Alexa Voice Service로 전송되면 alerts는 IDLE 상태에서 alert foreground 상태로 전환해야합니다.

alerts 채널이 foreground에 있는 경우에만 해당되며 Dialog channel이 비활성 상태임을 나타냅니다. 
채널 및 채널 우선 순위에 대한 자세한 내용은 상호 작용 모델을 참조하십시오.

음성, 버튼 누름 또는 GUI 기능을 통해 Alerts가 중지되면 Alerts 구성 요소가 alert foreground 상태에서 IDLE 상태로 전환됩니다.
alerts가 울리는 동안 Dialog channel이 활성화되면 Dialog channel이 활성화되어있는 한 alerts 구성 요소는  foreground alerts 상태에서 background alert 상태로 전환해야합니다. Dialog channel이 비활성 상태가 되면 중지/완료 될 때까지 foreground alert상태로 되돌아 가야합니다.

BACKGROUND ALERT : Dialog channel이 활성화되면 Alerts 구성 요소는 background alert 상태로 전환해야합니다. 
채널 및 채널 우선 순위에 대한 자세한 내용은 상호 작용 모델을 참조하십시오.




SetAlert Directive

이 directive는 AVS에서 보내 지정된 시간이나 시간 동안 타이머 또는 알람을 설정하도록 클라이언트에 지시합니다. 
타이머 또는 알람을 설정하기위한 음성 요청 또는 Amazon Alexa 앱을 사용하여 이전에 설정된 알람을 다시 사용할 수있게 설정 한 
경우 클라이언트가 SetAlert Directive를 수신 할 수 있습니다.

Sample Message

{
    "directive": {
        "header": {
            "namespace": "Alerts",
            "name": "SetAlert",
            "messageId": "{{STRING}}",
            "dialogRequestId": "{{STRING}}"
        },
        "payload": {
            "token": "{{STRING}}",
            "type": "{{STRING}}",
            "scheduledTime": "{{STRING}}"
        }
    }
}


Header Parameters

Parameter
Description
Type
messageId
A unique ID used to represent a specific message.
string
dialogRequestId
A unique ID used to correlate directives sent in response to a specific Recognize event.

Note: dialogRequestId is only sent in response to a speech request. dialogRequestId is not included in directives sent to your client on the downchannel stream.
string

Payload Parameters

Parameter
Description
Type
token
An opaque token that uniquely identifies the alert.
string
type
Identifies whether the alert is a timer or alarm. 
Accepted values: TIMER or ALARM.
string
scheduledTime
The scheduled time for an alert in ISO 8601 format.
string


SetAlertSucceeded Event

SetAlertSucceeded 이벤트는 SetAlert Directive를받은 후 클라이언트가 경고를 성공적으로 설정할 때  AVS로 보내야합니다.

Sample Message

{
    "event": {
        "header": {
            "namespace": "Alerts",
            "name": "SetAlertSucceeded",
            "messageId": "{{STRING}}"
        },
        "payload": {
            "token": "{{STRING}}"
        }
    }
}


Header Parameters

Parameter
Description
Type
messageId
A unique ID used to represent a specific message.
string

Payload Parameters

Parameter
Description
Type
token
An opaque token provided by the SetAlert directive.
string



SetAlertFailed Event

SetAlertFailed 이벤트는 SetAlert Directive를받은 후 클라이언트가 alert를 설정하지 못한 경우 AVS로 보내야합니다.

Sample Message

{
    "event": {
        "header": {
            "namespace": "Alerts",
            "name": "SetAlertFailed",
            "messageId": "{{STRING}}"
        },
        "payload": {
            "token": "{{STRING}}"
        }
    }
}


Header Parameters

Parameter
Description
Type
messageId
A unique ID used to represent a specific message.
string

Payload Parameters

Parameter
Description
Type
token
An opaque token provided by the SetAlert directive.
string


DeleteAlert Directive

이 Directive는 AVS에서 전송되어 클라이언트에게 특정 기간 또는 시간 동안 기존 타이머 또는 alert를 삭제하도록 지시합니다. 
클라이언트는 타이머 또는 알람을 취소/삭제할 음성 요청 또는 미리 설정된 alert가 Amazon Alexa 앱에서 삭제 된 경우 DeleteAlert Directive를 수신 할 수 있습니다.

Sample Message

{
    "directive": {
        "header": {
            "namespace": "Alerts",
            "name": "DeleteAlert",
            "messageId": "{{STRING}}",
            "dialogRequestId": "{{STRING}}"
        },
        "payload": {
            "token": "{{STRING}}"
        }
    }
}

Header Parameters

Parameter
Description
Type
messageId
A unique ID used to represent a specific message.
string
dialogRequestId
A unique ID used to correlate directives sent in response to a specific Recognize event.

Note: dialogRequestId is only sent in response to a speech request. dialogRequestId is not included in directives sent to your client on the downchannel stream.
string

Payload Parameters

Parameter
Description
Type
token
An opaque token that uniquely identifies the alert.
string

DeleteAlertSucceeded Event

DeleteAlertSucceeded 이벤트는 클라이언트가 기존 alert를 성공적으로 삭제하거나 취소 할 때 DeleteAlert Directive를 받은 후 AVS로 전송되어야합니다.
Note: For more information on when to send the DeleteAlertSucceeded event, please see Understanding Alerts.

Sample Message

{
    "event": {
        "header": {
            "namespace": "Alerts",
            "name": "DeleteAlertSucceeded",
            "messageId": "{{STRING}}"
        },
        "payload": {
            "token": "{{STRING}}"
        }
    }
}

Header Parameters

Parameter
Description
Type
messageId
A unique ID used to represent a specific message.
string

Payload Parameters

Parameter
Description
Type
token
An opaque token provided by the DeleteAlert directive.
string


DeleteAlertFailed Event

DeleteAlertFailed 이벤트는 클라이언트가 기존 alert를 삭제하거나 취소하지 못하는 DeleteAlert Directive를 수신 한 후 AVS로 보내야합니다.

Sample Message

{
    "event": {
        "header": {
            "namespace": "Alerts",
            "name": "DeleteAlertFailed",
            "messageId": "{{STRING}}"
        },
        "payload": {
            "token": "{{STRING}}"
        }
    }
}

Header Parameters

Parameter
Description
Type
messageId
A unique ID used to represent a specific message.
string

Payload Parameters

Parameter
Description
Type
token
An opaque token provided by the DeleteAlert directive.
string


AlertStarted Event

alert이 예정된 시간에 트리거되면 AlertStarted 이벤트를 AVS로 전송해야합니다.

Sample Message

{
    "event": {
        "header": {
            "namespace": "Alerts",
            "name": "AlertStarted",
            "messageId": "{{STRING}}"
        },
        "payload": {
            "token": "{{STRING}}"
        }
    }
}

Header Parameters

Parameter
Description
Type
messageId
A unique ID used to represent a specific message.
string

Payload Parameters

Parameter
Description
Type
token
An opaque token provided by the SetAlert directive.
string


AlertStopped Event

활성 alert가 중지되면 AlertStopped 이벤트를 AVS로 전송해야합니다. 
다음 두 가지 방법 중 하나로 alert를 중지 할 수 있습니다.

1. DeleteAlert Directive를 수신했습니다. AlertStopped 이벤트를 보낸 후에 클라이언트는 DeleteAlertSucceeded 이벤트 또는 DeleteAlertFailed 이벤트로 경고가 성공적으로 삭제 된 경우 AVS에 알려야합니다. 
    이 상호 작용은 alert 이해에 설명되어 있습니다. 
2. 물리적 컨트롤 (하드웨어 버튼 또는 GUI).

Sample Message

{
    "event": {
        "header": {
            "namespace": "Alerts",
            "name": "AlertStopped",
            "messageId": "{STRING}"
        },
        "payload": {
            "token": "{{STRING}}"
        }
    }
}

Header Parameters

Parameter
Description
Type
messageId
A unique ID used to represent a specific message.
string

Payload Parameters

Parameter
Description
Type
token
An opaque token provided by the SetAlert directive.
string


AlertEnteredForeground Event

AlertEnteredForeground 이벤트는 활성 alert가 foreground로 들어가거나 (전체 볼륨으로 재생 될 때) 클라이언트에서 AVS로 전송되어야하며, Dialog channel의 동시 대화가 완료된 후 foreground로 다시 입력되어야합니다. 
채널 상호 작용에 대한 자세한 내용은 상호 작용 모델을 참조하십시오.

Sample Message

{
    "event": {
        "header": {
            "namespace": "Alerts",
            "name": "AlertEnteredForeground",
            "messageId": "{{STRING}}"
        },
        "payload": {
            "token": "{{STRING}}"
        }
    }
}

Header Parameters

Parameter
Description
Type
messageId
A unique ID used to represent a specific message.
string

Payload Parameters

Parameter
Description
Type
token
An opaque token provided by the SetAlert directive.
string


AlertEnteredBackground Event

Dialog 채널에서의 동시 상호 작용이 발생하는 동안 활성 alert가 foreground에서 나올 때 (감쇠 또는 일시 정지) AlertEnteredBackground 이벤트를 클라이언트에서 AVS로 보내야합니다. 
채널 상호 작용에 대한 자세한 내용은 상호 작용 모델을 참조하십시오.

Sample Message

{
    "event": {
        "header": {
            "namespace": "Alerts",
            "name": "AlertEnteredBackground",
            "messageId": "{{STRING}}"
        },
        "payload": {
            "token": "{{STRING}}"
        }
    }
}

Header Parameters

Parameter
Description
Type
messageId
A unique ID used to represent a specific message.
string

Payload Parameters

Parameter
Description
Type
token
An opaque token provided in the SetAlert directive.
string








저작자 표시 비영리 변경 금지
신고

'Architecture > A.I' 카테고리의 다른 글

PlaybackController Interface  (0) 2017.05.26
Understanding Alerts  (0) 2017.05.26
Alerts Interface  (0) 2017.05.25
AudioPlayer Interface  (0) 2017.05.24

acet 박태하가 추천하는 readtrend 추천글!

설정

트랙백

댓글

:::: facebook을 이용하시는 분들은 로그인 후 아래에 코멘트를 남겨주세요 ::::

AudioPlayer Interface

Architecture/A.I 2017.05.24 16:25
[Good Comment!!, Good Discussion!!, Good Contens!!]
[ If you think that is useful, please click the finger on the bottom~^-^good~ ]
by ace-T

Overview
AudioPlayer 인터페이스는 음성을 통해 오디오 재생을 제어하는 directive와 재생 진행을 관리하고 모니터링하는 event를 제공합니다. 
재생 컨트롤을 버튼 (물리적 또는 GUI)에 매핑하려는 경우 PlaybackController 인터페이스를 참조.
이 페이지는 다음과 같은 주제를 다룹니다.
  •   AudioPlayer State Diagram
  •   AudioPlayer directive 및 event

State Diagram
상태 다이어그램 다음 다이어그램은 AudioPlayer 구성 요소에 의해 구동되는 상태 변경을 보여줍니다. 
Boxes는 AudioPlayer 상태를 나타내며 Connectors는 상태 전환을 나타냅니다.








AudioPlayer의 상태는 다음과 같습니다.
IDLE : AudioPlayer는 제품의 전원을 처음 켜거나 재부팅 한 후 Play directive를 사용하기 전에 IDLE 상태에 있습니다.
PLAYING : 클라이언트가 오디오 스트림 재생을 시작하면 AudioPlayer는 IDLE 상태에서 PLAYING 상태로 전환해야합니다.
오디오 스트림 일시 중지 또는 중지, 클라이언트가 스트림 버퍼링에 문제가 있거나 재생에 실패한 경우 클라이언트에서 작업 수행을 지시하는 지시문을 받으면 작업이 수행 될 때 AudioPlayer가 적절한 상태로 전환되어야합니다. AVS에 이벤트 보내기). 그렇지 않으면 현재 스트림이 끝날 때까지 AudioPlayer가 재생 상태를 유지해야합니다.
또한 AudioPlayer는 다음과 같은 경우 재생 상태를 유지해야합니다.
  • AVS로 재생(playback) 진행보고
  • AVS에 stream metadata 보내기

STOPPED : AudioPlayer가 중지 된 상태로 전환해야하는 경우가 4 가지입니다. 
재생 상태에있는 동안 AudioPlayer는 다음과 같은 경우에 중지 상태로 전환해야합니다. 
1) 스트림에 문제가 발생하여 재생에 실패한 경우.
2) 클라이언트는 AVS로부터 Stop directive를 받을 경우. 
3) clearBehavior가 CLEAR_ALL 인 ClearQueue directive을 받을 경우. 
4) REPLACE_ALL의 playBehavior가있는 Play directive을 받을 경우.
paused 또는 buffer_underrun 상태에서 CLEAR_ALL에 대한 ClearQueue directive를 수신하면 AudioPlayer는 중지로 전환 해야함. AudioPlayer는 클라이언트가 Play directive를 받고 오디오 스트림 재생을 시작하고 AVS에 PlaybackStarted 이벤트를 보낼 때마다 중지에서 재생으로 전환해야합니다.

PAUSED : 우선 순위가 높은 입력 / 출력 (예 : 사용자 또는 Alexa 음성)을 수용하기 위해 콘텐츠 채널의 오디오가 일시 중지 된 경우 AudioPlayer가 일시 중지 상태로 전환해야합니다. 우선 순위가 지정된 작업이 완료되면 재생을 다시 시작해야합니다. 
오디오 입 / 출력의 우선 순위 지정에 대한 자세한 내용은 상호 작용 모델을 참조하십시오.

BUFFER_UNDERRUN : 클라이언트가 읽히는 것보다 느리게 데이터를 제공받을 때, AudioPlayer는 buffer_underrun 상태로 전환해야합니다. 
AudioPlayer는 버퍼가 재생을 다시 시작할 정도로 충분히 찰 때까지이 상태를 유지해야하며, 이 시점에서 재생 상태로 돌아와야합니다.

FINISHED : 스트림 재생이 끝나면 AudioPlayer가 완료 상태로 전환해야합니다. 이것은 재생 대기열의 모든 스트림에 해당됩니다. 
재생 대기열이 대기중인 경우에도 클라이언트는 AVS에 PlaybackFinished event를 보내야하며, 이후에 각 스트림의 재생이 끝나면 재생 상태에서 종료되도록 완료해야합니다.

AudioPlayer는 다음과 같은 경우 완료에서 재생으로 전환해야합니다.
  • 클라이언트는 Play directive를 받습니다.
  • 재생 대기열의 next stream이 재생을 시작합니다 (PlaybackStarted event 다음).



Play Directive
Play directive는 클라이언트로 보내 오디오 재생을 시작합니다. 
JSON directive와 최대 하나의 오디오 스트림 또는 바이너리 오디오 첨부 파일로 구성된 멀티 파트 메시지입니다.

directive의 payload에 포함 된 playBehavior 매개 변수를 사용하여 클라이언트가 스트림의 대기열 처리 및 재생을 처리하는 방법을 결정할 수 있습니다. 
허용 된 값은 취해야 할 조치에 대한 힌트를 제공합니다.
REPLACE_ALL :  Play 지시어로 반환 된 스트림의 재생을 즉시 시작하고 현재 스트림과 대기열에 포함 된 스트림을 바꿉니다. 
                             스트림이 재생 중이고 REPLACE_ALL의 playBehavior로 Play 지시문을 받으면 AVS에 PlaybackStopped 이벤트를     
                             보내야합니다.
ENQUEUE : 스트림을 현재 큐 끝에 추가합니다.
REPLACE_ENQUEUED : 대기열의 모든 스트림을 바꿉니다. 현재 재생중인 스트림에는 영향을주지 않습니다.

NOTE.
재생 대기열에 스트림을 추가 할 때 활성 스트림의 토큰이 대기열에 추가되는 스트림의 expectedPreviousToken과 일치하는지 확인해야합니다. 토큰이 일치하지 않으면 스트림을 무시해야합니다. 그러나 expectedPreviousToken이 반환되지 않으면 스트림을 큐에 추가해야합니다.


Sample Message

{
    "directive": {
        "header": {
            "namespace": "AudioPlayer",
            "name": "Play",
            "messageId": "{{STRING}}",
            "dialogRequestId": "{{STRING}}"
        },
        "payload": {
            "playBehavior": "{{STRING}}",
            "audioItem": {
                "audioItemId": "{{STRING}}",
                "stream": {
                        "url": "{{STRING}}",
                        "streamFormat" "AUDIO_MPEG"
                        "offsetInMilliseconds": {{LONG}},
                        "expiryTime": "{{STRING}}",
                        "progressReport": {
                            "progressReportDelayInMilliseconds": {{LONG}},
                            "progressReportIntervalInMilliseconds": {{LONG}}
                        },
                        "token": "{{STRING}}",
                        "expectedPreviousToken": "{{STRING}}"
                }
            }
        }
    }
}


Binary Audio Attachment
Play directive에는 멀티 파트 메시지의 일부로 해당 이진 오디오 첨부 파일이있을 수 있습니다. 
바이너리 오디오 첨부 파일이 있으면 url에 제공된 값에 다음 접두사 cid가 포함됩니다.

다음 멀티 파트 헤더가 바이너리 오디오 첨부 파일 앞에옵니다.
Content-Type : application/octet-stream
Content-ID : {{Audio Item CID}}
{{BINARY AUDIO ATTACHMENT}}

Header Parameters

Parameter
Description
Type
messageId
특정 메시지를 나타내는 데 사용되는 고유 ID입니다.
string
dialogRequestId
특정 Recognize event에 응답하여 전송 된 directive를 상호 연관시키는 데 사용되는 고유 ID입니다.

Note: dialogRequestId는 음성 요청에 대한 응답으로 만 전송됩니다. dialogRequestId는 downchannel stream에서 클라이언트로 전송 된 directive에 포함되어 있지 않습니다.
string


Payload Parameters
중요 : 귀하의 클라이언트는 Play에서 지원하는 모든 payload 매개 변수를 수용하고 작동하도록 설계되어야하며 
JSON의 키 / 값 쌍이 누락 되어도 중단되어서는 안됩니다.
Parameter
Description
Type
playBehavior
재생 힌트를 제공합니다. 허용되는 값 :  REPLACE_ALL, ENQUEUE, REPLACE_ENQUEUED. 
  • REPLACE_ALLPlay Directive로 반환 된 스트림의 재생을 즉시 시작하고 현재 스트림과 대기열에 포함 된 스트림을 바꿉니다.
  • ENQUEUE현재의 큐의 마지막에 스트림을 추가합니다.
  • REPLACE_ENQUEUED큐의 모든 스트림을 바꿉니다. 현재 재생중인 스트림에는 영향을주지 않습니다.
string
audioItem
audioItem의 키 / 값 쌍을 포함합니다.
object
audioItem.audioItemId
audioItem을 식별합니다.
string
audioItem.stream
stream의 키 / 값 쌍을 포함합니다.
object
audioItem.stream.url
오디오 내용의 위치를 식별합니다. 
오디오 콘텐츠가 이진 오디오 첨부 파일 인 경우이 값은 콘텐츠의 고유 식별자이며 "cid :"와 같이 형식이 지정됩니다. 그렇지 않으면 값은 원격 http / https 위치가됩니다.
string
audioItem.stream.streamFormat
play directive에 연결된 바이너리 오디오 첨부 파일이 있으면 streamFormat이 payload에 포함됩니다. 연결된 오디오가 스트림이면이 매개 변수가 표시되지 않습니다.
Accepted Value: AUDIO_MPEG
string
audioItem.stream.offsetInMilliseconds
스트림에서 클라이언트가 재생을 시작해야하는 위치를 나타내는 타임 스탬프. 예를 들어, offsetInMilliseconds를 0으로 설정하면 스트림 재생이 0 또는 스트림 시작 부분에서 시작되어야 함을 나타냅니다. 다른 값은 재생이 제공된 오프셋에서 시작해야 함을 나타냅니다.
long
audioItem.stream.expiryTime
스트림이 유효하지 않은 경우의 ISO 8601 형식의 날짜와 시간.
string
audioItem.stream.progressReport
progress reports의 키 / 값 쌍을 포함합니다.
object
audioItem.stream.progressReport. progressReportDelayInMilliseconds
ProgressReportDelayElapsed 이벤트를 AVS로 보낼 시간 (밀리 초)을 지정합니다. ProgressReportDelayElapsed는 지정된 간격으로 한 번만 보내야합니다
참고 : 일부 음악 제공 업체는이 보고서를 요구하지 않습니다. 보고서가 필요하지 않은 경우에는 progressReportDelayInMilliseconds가 페이로드에 표시되지 않습니다.
long
audioItem.stream.progressReport. progressReportIntervalInMilliseconds
ProgressReportIntervalElapsed 이벤트를 AVS로 내보내는 시간을 밀리 초 단위로 지정합니다. ProgressReportIntervalElapsed는 지정된 간격으로 주기적으로 보내야합니다
참고 : 일부 음악 제공 업체는이 보고서를 요구하지 않습니다. 
보고서가 필요하지 않은 경우에는 progressReportIntervalInMilliseconds가 페이로드에 표시되지 않습니다.
long
audioItem.stream.token
현재의 스트림을 나타내는 opaque token 입니다.
string
audioItem.stream.
expectedPreviousToken
예상되는 이전 스트림을 나타내는 opaque token 입니다.
string


PlaybackStarted Event

클라이언트가 Play Directive를 처리하고 관련 오디오 스트림의 재생을 시작한 후에 PlaybackStarted 이벤트를 AVS로 보내야합니다.
 Note: AVS가 보내는 각 URL에 대해 하나 이상의 PlaybackStarted 이벤트가 필요합니다. 
여러 URL로 구성된 재생 목록 URL을 받으면 PlaybackStarted 이벤트를 하나만 보내십시오.

Sample Message

{
    "event": {
        "header": {
            "namespace": "AudioPlayer",
            "name": "PlaybackStarted",
            "messageId": "{{STRING}}"
        },
        "payload": {
            "token": "{{STRING}}",
            "offsetInMilliseconds": {{LONG}}
        }
    }
}

Header Parameters

Parameter
Description
Type
messageId
A unique ID used to represent a specific message.
string

Payload Parameters

Parameter
Description
Type
token
An opaque token provided by the Play directive.
string
offsetInMilliseconds
트랙의 현재 오프셋 (밀리 초)을 나타냅니다.
long

PlaybackNearlyFinished Event

클라이언트가 재생 대기열에서 next stream을 버퍼링 / 다운로드 할 준비가되면 PlaybackNearlyFinished 이벤트를 보내야합니다. 
클라이언트는 현재 재생중인 스트림에 대한 PlaybackStarted 이벤트 이후에만 해당 이벤트가 전송되도록해야합니다. 

Alexa는 다음 중 하나를 사용하여 해당 이벤트에 응답합니다.
  • next stream을 포함하는 Play Directive
  • HTTP 204 응답 코드

Sample Message
{
    "event": {
        "header": {
            "namespace": "AudioPlayer",
            "name": "PlaybackNearlyFinished",
            "messageId": "{{STRING}}"
        },
        "payload": {
            "token": "{{STRING}}",
            "offsetInMilliseconds": {{LONG}}
        }
    }
}

Header Parameters

Parameter
Description
Type
messageId
A unique ID used to represent a specific message.
string

Payload Parameters

Parameter
Description
Type
token
An opaque token provided by the Play directive.
string
offsetInMilliseconds
Identifies a track's current offset in milliseconds.
long


ProgressReportDelayElapsed Event

Play Directive에 progressReportDelayInMilliseconds가 있으면 ProgressReportDelayElapsed 이벤트를 AVS로 보내야합니다. 
이 이벤트는 offsetInMilliseconds가 아닌 스트림의 시작 부분에서 지정된 간격으로 한 번 보내야합니다. 
예를 들어, Play Directive에 progressReportDelayInMilliseconds 값이 20000 인 경우 ProgressReportDelayElapsed 이벤트는 
트랙 시작 부분에서 20,000 밀리 초가 지나야합니다. 그러나 Play Directive에 offsetInMilliseconds 값이 10000이고 progressReportDelayInMilliseconds 값이 20000이면 이벤트를 재생에 10,000 밀리 초씩 보내야합니다. 이는 진행 보고서가 재생 지시문의 오프셋이 아니라 스트림의 시작에서 전송되기 때문입니다

Sample Message

{
    "event": {
        "header": {
            "namespace": "AudioPlayer",
            "name": "ProgressReportDelayElapsed",
            "messageId": "{{STRING}}"
        },
        "payload": {
            "token": "{{STRING}}",
            "offsetInMilliseconds": {{LONG}}
        }
    }
}

Header Parameters

Parameter
Description
Type
messageId
A unique ID used to represent a specific message.
string

Payload Parameters

Parameter
Description
Type
token
An opaque token provided by the Play directive.
string
offsetInMilliseconds
Identifies a track's current offset in milliseconds.
long


ProgressReportIntervalElapsed Event


Play Directive에 progressReportIntervalInMilliseconds가 있으면 ProgressReportIntervalElapsed 이벤트를 AVS로 보내야합니다. 
이 이벤트는 offsetInMilliseconds가 아닌 스트림의 시작부터 지정된 간격으로 정기적으로 보내야합니다. 
예를 들어 Play 지시문에 progressReportIntervalInMilliseconds 값이 20000 인 경우 ProgressReportIntervalElapsed 이벤트는 트랙 시작부터 20,000 밀리 초 및 스트림이 끝날 때까지 20,000 밀리 초마다 보내야합니다. 그러나 Play Directive에 offsetInMilliseconds 값이 10000이고 progressReportIntervalInMilliseconds 값이 20000 인 경우 재생 시작부터 10,000 밀리 초, 스트림이 끝날 때까지 20,000 밀리 초마다 이벤트를 보내야합니다. 이는 지정된 간격이 재생 지시문의 오프셋이 아니라 스트림의 시작부터 있기 때문입니다.

Sample Message

{
    "event": {
        "header": {
            "namespace": "AudioPlayer",
            "name": "ProgressReportIntervalElapsed",
            "messageId": "{{STRING}}"
        },
        "payload": {
            "token": "{{STRING}}",
            "offsetInMilliseconds": {{LONG}}
        }
    }
}

Header Parameters

Parameter
Description
Type
messageId
A unique ID used to represent a specific message.
string

Payload Parameters

Parameter
Description
Type
token
An opaque token provided by the Play directive.
string
offsetInMilliseconds
Identifies a track's current offset in milliseconds.
long


PlaybackStutterStarted Event

PlaybackStutterStarted 이벤트는 클라이언트의 AudioPlayer 구성 요소가 읽는 것보다 느린 속도로 데이터가 공급 될 때 PlaybackStarted 이벤트 다음에 AVS로 보내야합니다. 일단 이 이벤트가 보내지면 구성 요소는 buffer_underrun 상태로 전환해야하며 버퍼가 재생을 다시 시작할만큼 충분히 가득 찰 때까지이 상태를 유지합니다

Sample Message

{
    "event": {
        "header": {
            "namespace": "AudioPlayer",
            "name": "PlaybackStutterStarted",
            "messageId": "{{STRING}}"
        },
        "payload": {
            "token": "{{STRING}}",
            "offsetInMilliseconds": {{LONG}}
        }
    }
}

Header Parameters

Parameter
Description
Type
messageId
A unique ID used to represent a specific message.
string

Payload Parameters

Parameter
Description
Type
token
An opaque token provided by the Play directive.
string
offsetInMilliseconds
Identifies a track's current offset in milliseconds.
long

PlaybackStutterFinished Event

스트림 재생을 다시 시작할 수있을만큼 버퍼가 가득 차면 PlaybackStutterFinished 이벤트를 AVS로 보내야합니다. 
AVS는 오디오 재생이 다시 시작될 때 이후의 PlaybackStarted 이벤트를 기대하지 않습니다.

Sample Message

{
    "event": {
        "header": {
            "namespace": "AudioPlayer",
            "name": "PlaybackStutterFinished",
            "messageId": "{{STRING}}"
        },
        "payload": {
            "token": "{{STRING}}",
            "offsetInMilliseconds": {{LONG}},
            "stutterDurationInMilliseconds": {{LONG}}
        }
    }
}

Header Parameters

Parameter
Description
Type
messageId
A unique ID used to represent a specific message.
string

Payload Parameters

Parameter
Description
Type
token
An opaque token provided by the Play directive.
string
offsetInMilliseconds
Identifies a track's current offset in milliseconds.
long
stutterDurationInMilliseconds
stutter의 지속 시간을 밀리 초 단위로 나타냅니다.
long

PlaybackFinished Event

클라이언트가 스트림 재생을 완료하면 PlaybackFinished 이벤트를 AVS로 전송해야합니다.
다음 경우에이 이벤트가 전송되지 않습니다.
  • 재생이 중지됩니다 (로컬로 또는 Stop 지시문의 결과로).
  • 스트림 간 이동 (다음 / 이전)

참고 : AVS가 보내는 각 URL에 대해 하나 이상의 PlaybackFinished 이벤트가 필요합니다. 여러 URL로 구성된 재생 목록 URL을 수신 한 경우 PlaybackFinished 이벤트를 하나만 보내십시오.


Sample Message

{
    "event": {
        "header": {
            "namespace": "AudioPlayer",
            "name": "PlaybackFinished",
            "messageId": "{{STRING}}"
        },
        "payload": {
            "token": "{{STRING}}",
            "offsetInMilliseconds": {{LONG}}
        }
    }
}

Header Parameters

Parameter
Description
Type
messageId
A unique ID used to represent a specific message.
string

Payload Parameters

Parameter
Description
Type
token
An opaque token provided by the Play directive.
string
offsetInMilliseconds
Identifies a track's current offset in milliseconds.
long


PlaybackFailed Event

스트림 재생을 시도하는 동안 클라이언트에서 오류가 발생할 때마다 PlaybackFailed 이벤트를 AVS로 전송해야합니다. 
스트림이 재생 중이고 다음 스트림이 버퍼링되지 않는 경우에는 currentPlaybackToken이 payload의 토큰과 다를 수 있습니다.

Sample Message

{
    "event": {
        "header": {
            "namespace": "AudioPlayer",
            "name": "PlaybackFailed",
            "messageId": "{{STRING}}"
        },
        "payload": {
            "token": "{{STRING}}",
            "currentPlaybackState": {
                "token": "{{STRING}}",
                "offsetInMilliseconds": {{LONG}},
                "playerActivity": "{{STRING}}"
            },
            "error": {
                "type": "{{STRING}}",
                "message": "{{STRING}}"
            }
        }
    }
}

Header Parameters

Parameter
Description
Type
messageId
A unique ID used to represent a specific message.
string

Payload Parameters

Parameter
Description
Type
token
재생에 실패한 스트림을 나타내는 Play Directive에서 제공하는 opaque token입니다.
string
currentPlaybackState
playbackState 객체의 키 / 값 쌍을 포함합니다.
object
playbackState.token
An opaque token provided by the Play directive.
string
playbackState.offsetInMilliseconds
Identifies a track's current offset in milliseconds.
long
playbackState.playerActivity
Identifies the player state. 
Accepted values: PLAYING, STOPPED, PAUSED, FINISHED, BUFFER_UNDERRUN, or IDLE.
string
error
Contains key/value pairs for error messages.
object
error.type
특정 유형의 오류를 식별합니다. 아래 표는 각 오류 유형에 대한 세부 정보를 제공합니다.
string
error.message
장치가 발생한 오류에 대한 설명. 이것은 기록 목적으로 만 사용됩니다. HTTP 관련 오류의 경우 오류 메시지에 HTTP 오류 응답 본문이 있어야합니다.
string

Error Types

Value
Description
MEDIA_ERROR_UNKNOWN
알 수없는 오류가 발생했습니다.
MEDIA_ERROR_INVALID_REQUEST
서버가 요청이 잘못된 것으로 인식했습니다
E.g. bad request, unauthorized, forbidden, not found, etc.
MEDIA_ERROR_SERVICE_UNAVAILABLE
클라이언트가 서비스에 연결할 수 없습니다.
MEDIA_ERROR_INTERNAL_SERVER_ERROR
서버가 요청을 수락했지만 예상대로 요청을 처리하지 못했습니다.
MEDIA_ERROR_INTERNAL_DEVICE_ERROR
클라이언트에 내부 오류가 있습니다.


Stop Directive

Stop Directive는 클라이언트로 전송되어 오디오 스트림의 재생을 중지합니다. 
귀하의 클라이언트는 음성 요청, 물리적 단추 누르기 또는 GUI 자산의 결과로 Stop 지시문을받을 수 있습니다.

Sample Message

{
    "directive": {
        "header": {
            "namespace": "AudioPlayer",
            "name": "Stop",
            "messageId": "{{STRING}}",
            "dialogRequestId": "{{STRING}}"
        },
        "payload": {
        }
    }
}

Header Parameters

Parameter
Description
Type
messageId
A unique ID used to represent a specific message.
string
dialogRequestId
A unique ID used to correlate directives sent in response to a specific Recognize event.

Note: dialogRequestId is only sent in response to a speech request. dialogRequestId is not included in directives sent to your client on the downchannel stream.
string


PlaybackStopped Event

클라이언트가 다음 지시문 중 하나를 받고 오디오 스트림 재생을 중지하면 PlaybackStopped 이벤트를 AVS로 보내야합니다.
  • Stop directive
  • REPLACE_ALL의 playBehavior가 포함 된 Play Directive
  • clearBehavior가 CLEAR_ALL 인 ClearQueue Directive

참고 :이 이벤트는 위에 나열된 지시문 중 하나가 수신 된 결과 스트림이 종료 된 경우에만 전송됩니다. 
일반적으로 이것은 사용자 작업의 결과입니다. 스트림 재생이 끝나면이 이벤트를 보내지 않아야합니다 (PlaybackFinished 참조).

Sample Message

{
    "event": {
        "header": {
            "namespace": "AudioPlayer",
            "name": "PlaybackStopped",
            "messageId": "{{STRING}}"
        },
        "payload": {
            "token": "{{STRING}}",
            "offsetInMilliseconds": {{LONG}}
        }
    }
}

Header Parameters

Parameter
Description
Type
messageId
A unique ID used to represent a specific message.
string

Payload Parameters

Parameter
Description
Type
token
An opaque token provided by the Play directive.
string
offsetInMilliseconds
Identifies a track's current offset in milliseconds.
long

PlaybackPaused Event

PlaybackPaused 이벤트는 우선 순위가 높은 입력 / 출력을 수용하기 위해 클라이언트가 콘텐츠 채널에서 오디오를 일시적으로 일시 중지해야 전송됩니다. 우선 순위가 지정된 작업이 완료되면 재생을 다시 시작해야합니다. 
클라이언트는 PlaybackResumed 이벤트를 보내야합니다. 
오디오 입 / 출력의 우선 순위 지정에 대한 자세한 내용은 상호 작용 모델을 참조하십시오.
참고 : 대기 시간을 줄이려면 Recognize 이벤트 후 PlaybackPaused를 보내야합니다.

Sample Message

{
    "event": {
        "header": {
            "namespace": "AudioPlayer",
            "name": "PlaybackPaused",
            "messageId": "{{STRING}}"
        },
        "payload": {
            "token": "{{STRING}}",
            "offsetInMilliseconds": "{{STRING}}"
        }
    }
}

Header Parameters

Parameter
Description
Type
messageId
A unique ID used to represent a specific message.
string

Payload Parameters

Parameter
Description
Type
token
An opaque token provided in the Play directive.
string
offsetInMilliseconds
Identifies a track's current offset in milliseconds.
long


PlaybackResumed Event

PlaybackPaused 이벤트 (재생이 우선 순위가 높은 입력 / 출력을 수용하기 위해 콘텐츠 채널에서 일시적으로 일시 중지 된 경우) 후에 재생이 다시 시작되면 PlaybackResumed 이벤트를 AVS로 보내야합니다. 오디오 입 / 출력의 우선 순위 지정에 대한 자세한 내용은 상호 작용 모델을 참조하십시오.

Sample Message

{
    "event": {
        "header": {
            "namespace": "AudioPlayer",
            "name": "PlaybackResumed",
            "messageId": "{{STRING}}"
        },
        "payload": {
            "token": "{{STRING}}",
            "offsetInMilliseconds": "{{STRING}}"
        }
    }
}

Header Parameters

Parameter
Description
Type
messageId
A unique ID used to represent a specific message.
string

Payload Parameters

Parameter
Description
Type
token
An opaque token provided in the Play directive.
string
offsetInMilliseconds
Identifies a track's current offset in milliseconds.
long


ClearQueue Directive

ClearQueue 지시문은 AVS에서 클라이언트로 전송되어 재생 대기열을 지 웁니다. 
ClearQueue 지시문에는 다음 두 가지 동작이 있습니다. 
  • CLEAR_ENQUEUED - 대기열을 지우고 현재 재생중인 스트림을 계속 재생합니다. 
  • CLEAR_ALL은 전체 재생 대기열을 지우고 현재 재생중인 스트림을 중지합니다 (해당하는 경우).

Sample Message

{
    "directive": {
        "header": {
            "namespace": "AudioPlayer",
            "name": "ClearQueue",
            "messageId": "{{STRING}}",
            "dialogRequestId": "{{STRING}}"
        },
        "payload": {
            "clearBehavior": "{{STRING}}"
        }
    }
}

Header Parameters

Parameter
Description
Type
messageId
A unique ID used to represent a specific message.
string
dialogRequestId
A unique ID used to correlate directives sent in response to a specific Recognize event.

Note: dialogRequestId is only sent in response to a speech request. dialogRequestId is not included in directives sent to your client on the downchannel stream.
string
Payload Parameters

Parameter
Description
Type
clearBehavior
대기열 동작을 결정하는 데 사용되는 문자열 값입니다.
Accepted valuesCLEAR_ENQUEUED and CLEAR_ALL
string


PlaybackQueueCleared Event

클라이언트가 ClearQueue directive를 처리 한 후에 PlaybackQueueCleared 이벤트를 AVS로 보내야합니다.

Sample Message

{
    "event": {
        "header": {
            "namespace": "AudioPlayer",
            "name": "PlaybackQueueCleared",
            "messageId": "{{STRING}}"
        },
        "payload": {
        }
    }
}

Header Parameters

Parameter
Description
Type
messageId
A unique ID used to represent a specific message.
string
Payload Parameters

An empty payload must be sent.


StreamMetadataExtracted Event

클라이언트가 수신하고 재생을 시작하는 오디오 스트림에 메타 데이터를 사용할 수있는 경우 
클라이언트는 원시 데이터로받은 키 / 값 쌍을 가져 와서 해당 쌍을 JSON 객체로 변환해야합니다. 
이 JSON 객체에서 문자열과 숫자는 JSON 문자열로 표현되어야하며 부울은 JSON 불린으로 표현되어야합니다. 
클라이언트는 바이너리 데이터를 포함하는 태그를 걸러 내야합니다. 
예를 들어 클라이언트는 이미지, 이미지 미리보기, 첨부 또는 응용 프로그램 데이터 태그를 AVS로 보내면 안됩니다.

Sample Message

{
    "event": {
        "header": {
            "namespace": "AudioPlayer",
            "name": "StreamMetadataExtracted",
            "messageId": "{{STRING}}"
        },
        "payload": {
            "token": "{{STRING}}",
            "metadata": {
                "{{STRING}}": "{{STRING}}",
                "{{STRING}}": {{BOOLEAN}}
                "{{STRING}}": "{{STRING NUMBER}}"
            }
        }
    }
}

Header Parameters

Parameter
Description
Type
messageId
A unique ID used to represent a specific message.
string
Payload Parameters

Parameter
Description
Type
token
An opaque token provided by the Play directive.
string
metadata
Contains key/value pairs associated with the metadata received.
object


출처 : https://developer.amazon.com/public/solutions/alexa/alexa-voice-service/reference/audioplayer#audioplayer-interface
















저작자 표시 비영리 변경 금지
신고

'Architecture > A.I' 카테고리의 다른 글

PlaybackController Interface  (0) 2017.05.26
Understanding Alerts  (0) 2017.05.26
Alerts Interface  (0) 2017.05.25
AudioPlayer Interface  (0) 2017.05.24

acet 박태하가 추천하는 readtrend 추천글!

설정

트랙백

댓글

:::: facebook을 이용하시는 분들은 로그인 후 아래에 코멘트를 남겨주세요 ::::

golang 정리

Language/go lang 2017.05.18 14:42
[Good Comment!!, Good Discussion!!, Good Contens!!]
[ If you think that is useful, please click the finger on the bottom~^-^good~ ]
by ace-T




func NewRequest(method, urlStr string, body io.Reader) (*Request, error) {


NewRequest는 메소드, URL 및 선택적 본문에 대해 새 Request를 반환합니다.
제공된 본문이 io.Closer 인 경우 반환되는 Request.Body가 body로 설정되고 클라이언트에 의해 닫힙니다. 
메소드 Do, Post, PostForm, Transport.RoundTrip.NewRequest는 Client.Do와 함께 사용하기에 적합한 Request를 반환하거나 Transport.RoundTrip.
테스트에 사용할 요청을 만들려면 Server Handler는 다음과 같이 NewRequest 함수를 사용합니다. 
net / http / httptest 패키지를 사용하거나 ReadRequest를 사용하거나 필드를 요청하십시오. 요청 유형에 대한 설명서를 참조하십시오. 
인바운드 및 아웃 바운드 요청 필드의 차이. 
body가 * bytes.Buffer, * bytes.Reader 또는 * 형식 인 경우
* strings.Reader, 반환 된 요청의 ContentLength는 
정확한 값 (-1 대신), GetBody가 채워집니다 (따라서 307과 308 리디렉션은 본문을 재생할 수 있음). 본문은 NoBody로 설정됩니다. 

ContentLength는 0입니다. 


}




func (r *Request) WithContext(ctx context.Context) *Request {


WithContext는 컨텍스트가 변경된 r의 얕은 복사본을 반환합니다. 

to ctx. 제공된 ctx는 nil이 아니어야합니다. 

}



- 계속 -

저작자 표시 비영리 변경 금지
신고

'Language > go lang' 카테고리의 다른 글

golang Context란?  (0) 2017.09.07
go lang - Map  (0) 2017.07.05
golang 정리  (0) 2017.05.18
GOROOT와 GOPATH  (0) 2017.04.27
go land에서 formatting 설정하기  (0) 2017.04.26
go lang Tip.  (0) 2017.02.15

acet 박태하가 추천하는 readtrend 추천글!

설정

트랙백

댓글

:::: facebook을 이용하시는 분들은 로그인 후 아래에 코멘트를 남겨주세요 ::::

yum에 대해 알아보자.

OS/Linux&Unix 2017.05.09 19:06
[Good Comment!!, Good Discussion!!, Good Contens!!]
[ If you think that is useful, please click the finger on the bottom~^-^good~ ]
by ace-T


출처 : https://access.redhat.com/ko/node/82093


yum의 개념
Yum은 Yellow dog Update라고도 하고 Duke University에서 RPM 설치를 개선하기 위해 개발한 패키지 관리자입니다.

1) 패키지 설치:
yum install package               ex) yum install httpd

2) 패키지 삭제:
yum remove package            ex) yum remove httpd

3) 패키지 업데이트:
yum update package             ex) yum update httpd

4) 패키지 검색:
yum search package              ex) yum search httpd

5) 패키지 정보:
yum info package                   ex) yum info httpd

6) 특정단어가 포함 된 패키지 리스트:

yum list term                           ex) yum list httpd

7) 특정 파일을 제공한 패키지 검색:
yum whatprovides filename    ex) yum whatprovides httpd.conf

8) 커널 패키지에 설치된 모든 패키지를 업데이트:
yum -y update                         ex) yum -y update


저작자 표시 비영리 변경 금지
신고

'OS > Linux&Unix' 카테고리의 다른 글

linux os 확인  (0) 2017.07.03
pokemon skin  (0) 2017.06.22
yum에 대해 알아보자.  (0) 2017.05.09
curl http/2  (0) 2017.03.21
리눅스 - scp file copy  (0) 2017.01.22
top 명령&옵션  (0) 2016.12.21

acet 박태하가 추천하는 readtrend 추천글!

설정

트랙백

댓글

:::: facebook을 이용하시는 분들은 로그인 후 아래에 코멘트를 남겨주세요 ::::

티스토리 툴바