SORACOM LTE-M Button과 Amazon Connect에서 도움을 받아 버튼을 만들었습니다.

SORACOM LTE-M Button powered by AWS 얻었지만, 무엇을 만들까 고민하고 있으면, 몸이 병으로 목소리를 낼 수 없는 발작이 일어난다고 하는 것으로, 혼자 있을 때 뭔가 있으면 일단 전하는 버튼이 있었다 쪽이 좋을 것이라고 말하는 것으로, 버튼을 누르면 전화가 걸려 오도록(듯이) 해 보았다.

전체상





SORACOM 버튼 설정



이쪽에 여러가지 있으므로, 자세한 것은 이쪽을 참고로. SORACOM LTE-M Button powered by AWS를 사용한 개발 TIPS
이번에는 1-Click 설정에서 Lambda 함수를 호출하도록 했다.

Lambda 함수



여러 사람에게 전화를 순서대로 걸 수 있도록, 걸은 전화 번호를 lambda의 인수로 받고, 그 다음의 번호에 거는 것 같은 구조로 했습니다.
1-Click에서 호출되면 event["Details"]["Parameters"]["customer"]는 존재하지 않으므로 0 번째 번호에 걸쳐 존재하면 다음 번호를 사용하는 것과 같은 구조입니다.
(예외 처리나, 복수인에게 걸려도 안 되었을 경우의 대처는 어떻게 할까 고민할 곳. 적어도 착신은 하고 있기 때문에 나중에라도 눈치챈 수 있을 것.)
import boto3
import json

CALL_LIST = [
    "+819011111111",
    "+819022222222",
    "+819033333333"
    ]
FLOW_ID = ""
INSTANCE_ID = ""
SOURCE_PHONE_NUMBER = ""

client = boto3.client('connect', region_name="ap-northeast-1")

def make_call(phone_number):
    response = client.start_outbound_voice_contact(
        DestinationPhoneNumber=phone_number,
        ContactFlowId=FLOW_ID,
        InstanceId=INSTANCE_ID,
        SourcePhoneNumber=SOURCE_PHONE_NUMBER
    )
    print(response)

def lambda_handler(event, context):
    print(json.dumps(event))

    pos = 0
    if "Details" in event and "Parameters" in event["Details"]:
        for i in range(len(CALL_LIST)):
            pos = i
            if CALL_LIST[i] == event["Details"]["Parameters"]["customer"]:
                pos = pos + 1
                break
        if pos >= len(CALL_LIST):
            print("no more phone numbers")
            return

    print(CALL_LIST[pos])
    make_call(CALL_LIST[pos])

    return

문의 흐름 ARN
예) arn:aws:connect:ap-northeast-1:< ACCOUNT_NO >:instance/< INSTANCE_ID >/contact-flow/< FLOW_ID >


변수
설정값


CALL_LIST
전화 번호 목록 (+ 국가 번호 번호 형식)

FLOW_ID
문의 흐름 ARN의

INSTANCE_ID
문의 흐름 ARN의

SOURCE_PHONE_NUMBER
취득한 번호 아시아 태평양 (도쿄) 리전의 Amazon Connect 인스턴스 전화 번호를 얻는 방법



문의 흐름



start_outbound_voice_contact에서 호출하는 경우 문의 흐름이어야 합니다.
이 흐름에서는 전화를 걸어도 대응할 수 없는 경우는 다음 사람에게 전화를 걸고 싶었기 때문에, 사용자의 입력으로 분기해, 반복해 Lambda를 호출하도록 하고 있습니다.



흐름에 로깅 동작 설정을 넣으면 CloudWatch Logs에 로그가 출력되므로 디버깅에 유용합니다.
로그는 이런 식으로 각 블록의 로그가 출력됩니다.



요약



버튼을 누르면 전화가 걸려 오므로, 그 전화 번호를 연락처에 등록해 두면, 뭔가 있던 것은 바로 전해지게 되었습니다.
잔량의 체크를 추가해, 교환 시기를 알게 하는 것도 좋다고 생각합니다만, 잔량이나 늘어날수록 밀리는 상황은 가능하면 피하고 싶다고 하는 생각은 있습니다. .

AWS의 엄청난 비용감으로 (2019/1/4 시점)



비용은 구성에 따라 달라지므로 자세한 내용은 Amazon Connect 요금을 확인하십시오.

발신을 하기 위해서 전화번호의 취득이 필요하므로, 0.10 USD/day.
나가는 비용 0.1000 USD/day.
버튼을 누르지 않으면 $3/Month 정도로 유지할 수 있을 것 같네요

면책



발언 내용은 개인적인 의견이며 소속 기업을 대표하는 것은 아닙니다.
게재하고 있는 소스 코드는, 샘플 레벨의 물건이므로 동작을 보증하는 것은 아닙니다.

좋은 웹페이지 즐겨찾기