제목 상세내용 제목+상세내용 전체 메시징 서비스 메시지 보내기 기술정보센터 기타 16 MMS MO에서 content 필드의 html 태그를 삭제하고 싶습니다. MMS MO을 수신하면 기본적으로 이통사에서 보낸 포맷 그대로 DB에 입력하기 때문에 MMS의 경우 태그가 붙어서 들어오게 됩니다. 만약 태그를 뺀 텍스트만 DB에 입력하고자 한다면 $EMMA_HOME/conf/emma.cf에서 아래 설정 값을 변경하시면 됩니다. #------------------------------------------------------------------------------- # MMSMO Html 및 XML 태그 삭제 여부 #------------------------------------------------------------------------------- mmsmo.tagstrip = 1 15 스팸 필터링(banlist table 사용)시 특수문자 사용법을 알고 싶습니다. 메시지 내용(content)으로 필터링 할 경우 (banlist Table의 ban_type 필드 값 ‘T’) 특수 문자 사용 시 정규 표현식 사용법에 맞춰야 합니다. 특수 문자 앞에 ‘\’, ‘[]’ 필요 유무를 체크하도록 합니다. 1) '\' , '[]'와 함께 써야 하는 특수 문자 * + $ | ( ) { } ^ [ ] 예:) * -> \* OR [*], [금감원] -> \[금감원\] 2) 바로 사용 가능한 특수 문자 ! # % & @ ` : ; - < > , ~ 3) 정규 표현식 패턴 a|b : a또는 b ([ad]도 같은 표현) [a-d] : 소문자 ‘a’에서 ‘d’까지 (“a|b|c|d” 또는 “[abcd]”와 동일) [^abc] : abc를 제외한 문자열 [[a-f][0-9]] : a~f범위에 속하거나 또는 0~9범위에 속하는 문자열 [[a-z]&&[jkl]] : a~z 범위에 포함되고 jkl에도 포함되는 문자열 [[a-z]&&[^jkl]] : a~z 범위에 포함되고 jkl이 아닌 문자열 ab* : a뒤에 0개 이상의 b가 있는 문자열 (“a”, “ab”, “abbb” 등) ab+ : a 뒤에 1개 이상의 b가 있는 문자열 (“ab”, “abbb” 등) . : 줄바꿈 문자 이외의 모든 문자 \ (backslash) : 정규식에 사용되는 특수문자 (*, ", \ 문자를 명시할때 사용. 예) \ -> \\, " -> \", * -> \*) 14 MMS 전송 시 첨부파일 전송 시 특정 통신사로만 전송하고 싶습니다. 첨부파일 테이블(em_mmt_file)의 carrier 필드를 4절과 동일한 방식으로 설정하면 됩니다. 이 기능은 통신사별로 다른 파일을 전송 하실 때 유용합니다. 예를 들어 smil은 SKT, html은 KT으로 전송 하실 수 있습니다. 13 Trigger 처럼 동작하는 방법이 있습니까? EMMA는 Trigger를 사용해도 무방하지만, Trigger를 사용하는 방법보다는 아래 두 가지 방법을 사용하실 것을 권장 드립니다. ▶ Procedure 수정 : 간단한 DB 처리 부분을 해야 한다면, 프로시저를 직접 수정하시면 됩니다. ▶ User Callback Library : User Callback Library는 메시지 송수신 각 단계에서 사용자가 개발한 모듈이 Call 되는 기능입니다. EMMA V.3 이전 버전에서는 메시지 송수신 후 특정 Job 수행을 위해 Trigger등을 사용하거나 별도로 DB를 Polling하는 Application을 개발했지만, EMMA v.3에서는 사용자 라이브러를 개발 후 Call하도록 하면 됩니다. 자세한 사용 방법은 EMMA사용자 설명서 7절 User Library을 참조하시기 바랍니다. 12 전송 테이블에 데이터를 입력했는데, 발송이 되지 않습니다. em_smt_tran 또는 em_mmt_tran에 데이터를 입력하였는데, 휴대폰으로 메시지가 전송이 되지 않는다면 먼저 sp_em_smt_tran_select 프로시저를 call하여 검색 결과가 존재하는지 확인해보시기 바랍니다. 만약 검색결과가 없다면 검색 조건에 해당하는 데이터가 존재하는 않는 것이므로 프로시저의 SQL 조건 부분을 체크하시기 바랍니다. 프로시저 Call방법은 아래와 같습니다. ▶ Oracle의 경우(sqlplus) VARIABLE p_cur refcursor begin emma_pkg_smt.sp_em_smt_tran_select(:p_cur, 'SMT', 'S', 2880, 'E1', 'Y' ); end; / print :p_cur ▶ MSSQL의 경우 exec sp_em_smt_tran_select 'SMT', 'S', 1440, 'E1', 'Y' ▶ MySQL의 경우 call sp_em_smt_tran_select('SMT', 'S', 1440, 'E1', 'Y'); 11 Content필드 입력 시 Line break(줄 바꿈)는 어떻게 입력하나요? Message 본문 입력 시 줄 바꿈을 입력하기 위해서는 DB별로 아래처럼 처리하시면 됩니다. ▶ Oracle의 경우 '안녕하세요'||chr(13)||chr(10)||'좋은 하루 되십시오' ▶ MSSQL의 경우 '안녕하세요'+char(13) + char(10) + '좋은 하루 되십시오' ▶ MySQL의 경우 '안녕하세요\r\n좋은 하루 되십시오' 10 MSSQL에서 테이블 정렬 문제(Korean_Wansung_CS_AS, Korean_Wansung_CI_AS)가 발생합니다. MSSQL에서 DB 기본 테이블 정렬 값과 프로시저에서 정의한 정렬 값이 틀린 경우 또는 테이블간 정렬 값이 틀린 경우 아래와 같은 로그가 발생합니다. 해당 로그가 발생한다면, 기존에 생성된 EMMA관련 테이블 drop 후 프로시저에서 "COLLATE Korean_Wansung_CS_AS" 부분을 삭제 하신 후 프로시저를 다시 컴파일 하여 테스트 하시면 됩니다. ▶ Log com.microsoft.sqlserver.jdbc.SQLServerException: equal to 작업에서의 "Korean_Wansung_CS_AS"과(와) "Korean_Wansung_CI_AS" 간의 데이터 정렬 충돌을 해결할 수 없습니다. at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(Unknown Source) 9 Communications link failure due to underlying exception 오류가 출력됩니다. MySQL 사용 시 MTDistributor Thread에서 아래와 같은 메시지가 출력된다면 일정 세션 동안 DB 트래픽이 없어 DB 연결이 끊겼기 때문에 출력되는 로그입니다. MTDistributor에서만 발생하는 이유는 G/W에서 전송 결과 수신이 되어야 DB 처리를 시도하기에 일정시간 처리 건수가 없으면 DB연결이 해제되기 때문입니다. 단 DB가 끊기더라도 재 연결 후 결과 처리 하기 때문에 동작 상 문제는 되지는 않습니다. 단, 해당 오류가 빈번하게 발생된다면, MySQL 설정 값 중 wait_timeout 값을 확인 하셔서 적정 값으로 늘리시기를 권장 드립니다. ▶ Log [2009/05/14 21:56:24.691] [ERROR] [TH0] MTDistributor I SysException occurred when insert to database from queue. ib.a.e.e at ib.emma.db.mysql.MySQLRPTDBHandler.updateMtResult(Unknown Source) at ib.emma.worker.MTDistributor.I(Unknown Source) at ib.emma.worker.MTDistributor.run(Unknown Source) com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception: java.io.EOFException MESSAGE: Can not read response from server. Expected to read 4 bytes, read 0 bytes before connection was unexpectedly lost. 8 “문자열이나 이진 데이터는 잘립니다.”란 메시지가 반복 출력됩니다. SQLServer에서 Insert되는 데이터의 길이가 정의된 필드의 길이보다 클 경우 발생하는 오류입니다. 이 경우 실제 입력되는 값과, 테이블 필드의 길이를 비교하여 길이를 맞춰주시기 바랍니다. ▶ Log [2009/04/07 20:49:17.390] [ERROR] [TH0] MODistributor L SysException occurred when inserting MMSMO to database from queue. ib.a.e.e at ib.emma.db.mssql.MSSQLMODBHandler.insertMmsMo(Unknown Source) at ib.emma.worker.MODistributor.L(Unknown Source) at ib.emma.worker.MODistributor.run(Unknown Source) java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]문자열이나 이진 데이터는 잘립니다. at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source) 7 EMMA 실행 시 Oracle 계정 권한 설정 오류가 발생합니다. EMMA 실행 시 아래와 같은 로그가 출력된다면, 오라클 계정의 테이블 생성 권한이 없어서 발생하는 경우입니다. 이때는 해당 계정에 테이블 생성 권한을 아래 ‘권한 부여 방법’에 있는 명령어를 통해 부여하면 됩니다. ▶ Log java.sql.SQLException: ORA-01031: 권한이 불충분합니다 ORA-06512: "EMMA.EMMA_PKG_COM", 줄 152에서 ORA-06512: 줄 1에서 at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112) ▶ 권한 부여 방법 oralce9i : grant create any table to user_emma; oracle10g : grant create table to user_emma; 12